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>
我的 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>