2017-02-05 2 views
0

Ich habe einenWie löst man die Schaltfläche aus, wenn der Benutzer mit Jquery auf die Eingabetaste klickt?

TextBox (id = txtFilterValue),

button (id = btnAdd) und

Tabelle (id = Abfragetabelle)

Sobald der Benutzer den Wert in das Textfeld eingegeben hat, können sie die Eingabetaste drücken. Wenn sie also die Eingabetaste drücken, sollte sie die Schaltfläche "Hinzufügen" aufrufen, die bereits in jquery definiert ist. Diese

ist, was ich versucht

JQuery-Code

//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; 
    } 
}); 

Der obige Code zu Verhindern, dass die Enter-Taste und es wird auf die Schaltfläche Hinzufügen nennen.

Wie ich dachte, es funktioniert. Aber es ruft zwei Mal und die Werte sind 2 mal. Es sollte nicht zweimal hinzugefügt werden.

Wenn ich direkt auf die Schaltfläche Hinzufügen klicke, wird nur der Datensatz in meine Tabelle eingegeben. mit dem gleichen Rückruf

Dies ist meine Schaltfläche Code hinzufügen

//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>'); 
     } 
    } 
}); 
+0

Warum negativen Marken ..? –

Antwort

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

Hier für zwei Ereignisse, die Sie hören. Das heißt, wenn einer von ihnen auftritt, wird der Rückruf aufgerufen. Da beide auf die Schlüsselereignisse bezogen sind (beide sind ziemlich identisch), wird der Rückruf zweimal aufgerufen.

So entfernen Sie nur einer von ihnen wie folgt aus:

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