清除jQuery变量的缓存

时间:2019-02-15 17:18:19

标签: javascript jquery

我正在处理共享点编辑表单,我们可以定义一个名为PreSaveItem()的函数,该函数将在表单提交到服务器之前执行,如下所示:-

<script language="javascript" type="text/javascript"> 
function PreSaveItem(){
    var result = true;
    var status=$("select[id*='Status_'] option:selected").text();
    if (status == "Closed") {
        var analysis = $('input[id^="Analysis_"]').val().trim();
        alert(analysis);
        alert(Date.now());
        if (analysis == "") {
            alert("Please Enter Analysis before closing the item");
            result = false;
        }
    }
    return result;
}
</script>

如果用户将状态为“ Analysis”的输入字段留空,则上述脚本将显示和alert(),如果用户将状态更改为“已关闭”。但是当脚本正在读取$('input[id^="Analysis_"]').val().trim();的更新值时,似乎遇到了缓存问题。如下:-

  1. 让我将状态更改为“已关闭”,然后将“分析”输入字段留空
  2. 点击保存
  3. 然后我将正确alert("Please Enter Analysis before closing the item");收到此警报。
  4. 然后,在收到警报后,我在“分析”输入字段中输入了一些文字>>再次单击“保存”。
  5. 那我将得到同样的错误。并且alert(analysis);仍将显示旧的空值,而alert(Date.now());将显示更新的日期时间..看来var status=$("select[id*='Status_'] option:selected").text();正在被缓存吗? 同样奇怪的是$("select[id*='Status_'] option:selected").text()没有被缓存...

2 个答案:

答案 0 :(得分:0)

警报后清除值。

<script language="javascript" type="text/javascript"> 
    function PreSaveItem(){
        var result = true;
        var status=$("select[id*='Status_'] option:selected").text();
        if (status == "Closed") {
            var analysis = $('input[id^="Analysis_"]').val().trim();
            alert(analysis);
            alert(Date.now());
            if (analysis == "") {
                alert("Please Enter Analysis before closing the item");
                result = false;
                var analysis = undefined;
            }
        }
        return result;
    }
</script>

答案 1 :(得分:0)

尽管显然没有得到您想要达到的目标,但建议您更新所选文本的方法。可能有效 假设您的选择选项如下

<select id="CountryName">
<option>India</option>
<option>Australia</option>
<option>England</option>
</select>

要获取所选文本,您可以通过以下方式直接获取所选文本:

var getSelected = $('#CountryName').find(":selected").text();