当用户使用Jquery单击输入键时如何触发按钮?

时间:2017-02-05 06:17:09

标签: javascript jquery asp.net

  

我有一个

     

TextBox(id = txtFilterValue),

     

添加按钮(id = btnAdd)和

     

表格(id = queryTable)

     

一旦用户在文本框中输入值,他们可以按回车键。因此,当他们按下回车键时,它应该调用已经在jquery中定义的添加按钮

这就是我试过的

Jquery代码

    //Preventing ENTER Key
$('#form1').on('keyup keypress', function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode === 13) {
        //$('input[name = btnAdd]').click();
        $("#btnAdd").trigger('click');
        e.preventDefault();
        return false;
    }
});

以上代码阻止输入键,它将调用添加按钮

  

我认为它正在发挥作用。但它调用两次,值增加 2次。它不应该添加两次。

     

当我直接点击“添加”按钮时,它只在我的桌子上输入一个记录。

这是我的按钮添加代码

    //Filter Query Add to TABLE and TEXTBOX
$("#btnAdd").click(function () {

    var selectedField = $("#FilterField option:selected").text();
    var operator = $("#ddlOperator :selected").val();
    var filterValue = $("#txtFilterValue").val();
    var query;
    var textFilterRecord = $("#txtFilterRecord").val();

    //values seperated by COMMA
    var arrayTxtConditionValue = filterValue.split(',');

    if (operator == 'equalTo') {

        if ($("#txtFilterRecord").val().length == 0) {

            //put the single quotation( ' ) in between values
            var filterCommaValue = '';
            for (var i = 0; i < arrayTxtConditionValue.length; i++) {
                if (i == 0) {
                    filterCommaValue = filterCommaValue + "'" + arrayTxtConditionValue[i] + "'";
                }
                else {
                    filterCommaValue = filterCommaValue + ",'" + arrayTxtConditionValue[i] + "'";
                }
            }

            query = selectedField + ' IN(' + filterCommaValue + ') ';
            $("#txtFilterRecord").val($("#txtFilterRecord").val() + query);

            $("#queryTable > tbody:last-child").append('<tr><td class="FieldNameID">' + selectedField + '</td><td class="OperatorID"> IN(' + filterCommaValue + ')</td></tr>');
        }
        else {

            var filterCommaValue = '';
            for (var i = 0; i < arrayTxtConditionValue.length; i++) {
                if (i == 0) {
                    filterCommaValue = filterCommaValue + "'" + arrayTxtConditionValue[i] + "'";
                }
                else {
                    filterCommaValue = filterCommaValue + ",'" + arrayTxtConditionValue[i] + "'";
                }
            }

            var radioButton = $('input[name=group]:checked').val();
            query = radioButton + ' ' + selectedField + ' IN(' + filterCommaValue + ') ';
            $("#txtFilterRecord").val($("#txtFilterRecord").val() + query);

            $('#queryTable > tbody:last-child').append('<tr><td class="FieldNameID">' + radioButton + ' ' + selectedField + '</td><td class="OperatorID"> IN(' + filterCommaValue + ')</td></tr>');
        }
    }
});

1 个答案:

答案 0 :(得分:1)

$('#form1').on('keyup keypress', function (e) {
    // ...

在这里,您正在侦听具有相同回调的两个事件。这意味着只要其中一个出现,就会调用回调。由于它们都与关键事件有关(两者几乎相同),因此回调将被调用两次。

所以只需删除其中一个:

$('#form1').on('keypress', function (e) {
    // ...