jQuery,如果var = 1就做这个

时间:2014-03-12 21:50:00

标签: jquery

下面的代码用一个用户在其中键入的另一个字段的内容填充一个禁用的表单字段。

当编辑&#39>时,已启用已停用的表单字段单击,然后显示另外两个选项'取消'并且'保存'。

点击'编辑'变量'计数器'设置为= 1

这是我失势的地方......

如果计数器== 1,则应暂停新启用字段的自动填充。

然而,尽管更新了计数器变量,自动填充仍然有效。

有什么想法吗?

JSfiddle here.

$(document).ready(function(){
var counter = 0
$('#filename_edit').click(function(){
    $('#filename').prop('disabled', false);
    $(this).hide();
    $('#filename_edit_btns').show();
    counter = 1;
    alert(counter);
});
$('#filename_edit_cancel').click(function(){
    $('#filename').prop('disabled', true);
    $(this).parent().hide();
    $('#filename_edit').show();
    counter = 0;
    alert(counter);
});
$('#filename_edit_save').click(function(){
    $('#filename').prop('disabled', true);
    $(this).parent().hide();
    $('#filename_edit').show();
    counter = 1;
    alert(counter);
});
if (counter == 0) {
    $('#title').bind('keyup keypress blur', function() {  
        var myStr = $(this).val()
            myStr=myStr.toLowerCase();
            myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,"");
            myStr=myStr.replace(/\s+/g, "-");

        $('#filename').val(myStr);
    });
}
});

2 个答案:

答案 0 :(得分:2)

如果我做对了,你不希望在编辑时自动填充 filename 字段。

但是你在页面加载时绑定你的函数,所以即使counter发生变化,绑定仍然打开,函数将触发。

一种解决方案是将测试移到绑定中:

$('#title').bind('keyup keypress blur', function() {          
    if (counter == 0) {                              //<--- Here
        var myStr = $(this).val();
        myStr=myStr.toLowerCase();
        myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,"");
        myStr=myStr.replace(/\s+/g, "-");
        $('#filename').val(myStr);
    }
});

Here's a working demo

答案 1 :(得分:1)

您的if语句执行一次,您可以将其移至处理程序的正文:

$('#title').bind('keyup keypress blur', function() {  
    if ( counter === 1 ) return;
    var myStr = $(this).val()
        myStr=myStr.toLowerCase();
        myStr=myStr.replace(/[^a-zA-Z0-9 ]+/g,"");
        myStr=myStr.replace(/\s+/g, "-");

    $('#filename').val(myStr);
});