location.href 双引号:Laravel 5.2

location.href in double quote : Laravel 5.2

我的 select 代码如下

<select id="ddlLanguages" class="form-control">
    @foreach($Languages as $Language) 
        <option onchange="location.href = {!! URL('Tr/' . '/' . $Language->LID) !!}" 
              value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>
    @endforeach
</select>

下面生成html

<select id="ddlLanguages" class="form-control">
    <option onchange="location.href = http://localhost/Learning/public/Translation/1" 
                    value="1">English</option>
    <option onchange="location.href = http://localhost/Learning/public/Translation/2" 
                    value="2">French</option>
</select>

这部分有问题 "location.href = http://localhost/Learning/public/Translation/1" 我在 URL 中缺少一些格式。

你能指引我正确的道路吗?

改变这个:

<option onchange="location.href = {!! URL('Tr/' . '/' . $Language->LID) !!}" 
              value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>

对此:

<option onchange="location.href = '{!! URL('Tr/' . '/' . $Language->LID) !!}'" 
              value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>

你传递给location.href的url必须是一个字符串,这就是为什么你需要用单引号将整个url括起来。

试试这个:

<select id="ddlLanguages" class="form-control">
    @foreach($Languages as $Language) 
        <option data-url="{!! URL('Tr/' . '/' . $Language->LID) !!}" 
              value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>
    @endforeach
</select>


<script>
$('#ddlLanguages').on('change', function () {
  var url = $(this).attr('data-url'); // get selected value
  if (url) { // require a URL
    window.location = url; // redirect
  }
  return false;
});
</script>

onchange 不应该放在 <option> 上,而是放在 <select> 上,因为 <option> 没有改变。通过选择一个选项,您正在更改 <select>。如果你想根据 <option> 选择重定向。执行以下操作:

var select = document.getElementById('ddlLanguages');
select.onchange = function() {
  location.href = select[select.selectedIndex].getAttribute('data-location');
}

有关此 javascript 代码段的 jQuery 版本,请参见下文。

将此 javascript 放在您页面的某处。而你的 <options> 应该有 data-location

<option data-location="{!! URL('Tr/' . '/' . $Language->LID) !!}" value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>

或者您可以在 click 上将选项更改为 "redirect":

<select id="ddlLanguages" class="form-control">
  <option onclick="location.href = http://localhost/Learning/public/Translation/1" value="1">English</option>
  <option onclick="location.href = http://localhost/Learning/public/Translation/2" value="2">French</option>
</select>

jQuery:

$(function() {
    $('#ddlLanguages').change(function(){
         location.href = $(this).data('location');
    });
});

JS代码

$('#ddlLanguages').change(function(){
    location.href = $(this).find(":selected").attr('data-url');
});

服务器端

<select id="ddlLanguages" class="form-control">
    @foreach($Languages as $Language) 
        <option data-id="{!! URL('Tr/' . '/' . $Language->LID) !!}" 
              value="{!! $Language->LanguageID !!}">{!! $Language->Language !!}</option>
    @endforeach
</select>