我在我的项目中使用了$(window).load
,当我的页面第一次加载时,它运行正常。但是当我的页面从缓存加载或快速重新加载时,编写在$(window).load
函数内的代码不起作用。如何解决这个问题?
window.load中的代码
$(window).load(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:''; ?>';
if (selectedfacode > 0) {
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
});
//also tried with
$("#facode").ajaxComplete(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:''; ?>';
if (selectedfacode > 0) {
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
});
答案 0 :(得分:3)
您在比较if (selectedfacode > 0)
时遇到逻辑错误,因为selectedfacode
被定义为字符串(如果没有从PHP服务器脚本返回的输出,则至少为''
)和{{ 1}}将在JavaScript中返回String > 0
。
我建议您检查字符串的长度。
您在修复之前编码:它永远不会在false
#facode
&#13;
$(window).load(function() {
selectedfacode = 'br';
if (selectedfacode > 0) {
alert("WILL NEVER GET HERE");
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
console.log("Can a string be > 0 in JavaScript? Answer: " + ("a string" > 0) + "");
});
&#13;
修复后的代码:检查字符串<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='facode'>
<option value='bl'>Blondes</option>
<option value='br'>Brunettes</option>
</select>
length > 0
&#13;
$(window).load(function() {
selectedfacode = 'br';
if (selectedfacode.length > 0) {
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
});
&#13;
后续步骤:修复此问题后(假设在复制和粘贴问题时不会引入错误)如果您仍然遇到满负载和缓存命中之间存在差异的问题,则可能是时间问题。例如,如果您通过AJAX加载<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='facode'>
<option value='bl'>Blondes</option>
<option value='br'>Brunettes</option>
</select>
元素,显然应该等到它被加载后再尝试选择一个选项等。
答案 1 :(得分:0)
如下所示更改您的技术以达到您想要的效果。 首先设置你的变量值与你的变量值相同,但不是''字符串将其设置为0表示最小值。
$(window).load(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:0; ?>';
});
现在你的ajax代码应该运行以获取你的数据下拉,如:
$.ajax({
type: "POST",
data: "",
url: "urlhere",
success: function(result){
//set your result as option list of your drop down as u explained above in comments.
//here main work is call to a function which make an option selected as per the value you set in variable.
setSelectedOpt();
}
});
这里的setSelectedOpt函数将根据您的变量值从选项列表中选择一个选项。
function setSelectedOpt(){
//put if condition inside this function like:
if( typeof selectedfacode !== 'undefined' && selectedfacode>0)
{
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
selectedfacode = 0;
}
}