输入框中的标记不应为零

时间:2017-02-02 12:07:43

标签: javascript jquery html

我开发了一张表,学生必须输入主题名称和标记。我只使用javascript的数字输入框,但我无法进行验证,因此学生不能输入0作为标记。



$("#insertbotheli13").click(function () {
     $("#tablebotheli13").each(function () {
         var tds = '<tr>';
         jQuery.each($('tr:last td', this), function () {
             tds += '<td>' + $(this).html() + '</td>';
         });
         tds += '</tr>';
         if ($('tbody', this).length > 0) {
             $('tbody', this).append(tds);
         } else {
             $(this).append(tds);
         }
     });
});

 $(".allownumericwithoutdecimal").on("keypress keyup blur",function (event) {    
           $(this).val($(this).val().replace(/[^\d].+/, ""));
            if ((event.which < 48 || event.which > 57)) {
                event.preventDefault();
            }
        });
		
		
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<table id="tablebotheli13" class="table table-striped table-hover">
								 <input type="button" class="btn green" value="Add New+" id="insertbotheli13"></input>
    <thead>
        <tr>
        <th>Subject</th>
		<th> Marks</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            
            <td>
                <input type="text" class="form-control subject1" name="subject1">
            </td> &nbsp;&nbsp;&nbsp;&nbsp;
			<td>
                <input type="text" class="form-control marks1 allownumericwithoutdecimal" name="marks1">
            </td>
 
        </tr>
    </tbody>
</table>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:1)

您可以检查输入值是否等于零然后将其删除,请检查下面的代码段。

此外,事件应附加事件委托,因为您正在动态添加输入:

$("body").on("keypress keyup blur paste", ".allownumericwithoutdecimal", function(event) {
    if( $(this).val() == "0"){
        $(this).val( $(this).val().replace(/0/g, "") );
    }

    if ((event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
});

希望这有帮助。

$("#insertbotheli13").click(function() {
  $("#tablebotheli13").each(function() {
    var tds = '<tr>';
    jQuery.each($('tr:last td', this), function() {
      tds += '<td>' + $(this).html() + '</td>';
    });
    tds += '</tr>';
    if ($('tbody', this).length > 0) {
      $('tbody', this).append(tds);
    } else {
      $(this).append(tds);
    }
  });
});

$("body").on("keypress keyup blur paste", ".allownumericwithoutdecimal", function(event) {
  if( $(this).val() == "0"){
    $(this).val( $(this).val().replace(/0/g, "") );
  }

  if ((event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<table id="tablebotheli13" class="table table-striped table-hover">
  <input type="button" class="btn green" value="Add New+" id="insertbotheli13"></input>
  <thead>
    <tr>
      <th>Subject</th>
      <th>Marks</th>
    </tr>
  </thead>
  <tbody>
    <tr>

      <td>
        <input type="text" class="form-control subject1" name="subject1">
      </td>&nbsp;&nbsp;&nbsp;&nbsp;
      <td>
        <input type="text" class="form-control marks1 allownumericwithoutdecimal" name="marks1">
      </td>

    </tr>
  </tbody>
</table>

答案 1 :(得分:0)

试试这个:

[Column("ORD")]
[Display(Name = "Søgeord")]
public string SearchKeysString { get { return SearchKeys.Aggregate<string>((a, b) => a + " " + b); } }
public List<string> SearchKeys { get; set; }

答案 2 :(得分:0)

只需在keyup上添加条件并删除keypress事件,因为现在不需要

$("#insertbotheli13").click(function () {
     $("#tablebotheli13").each(function () {
         var tds = '<tr>';
         jQuery.each($('tr:last td', this), function () {
             tds += '<td>' + $(this).html() + '</td>';
         });
         tds += '</tr>';
         if ($('tbody', this).length > 0) {
             $('tbody', this).append(tds);
         } else {
             $(this).append(tds);
         }
     });
});

 $(".allownumericwithoutdecimal").on("keyup blur",function (event) {  
           $(this).val($(this).val().replace(/[^\d].+/, ""));
   if(parseInt($(this).val()) <= 0) alert("Marks should be more than Zero");
            if ((event.which < 48 || event.which > 57)) {
                event.preventDefault();
            }
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<table id="tablebotheli13" class="table table-striped table-hover">
								 <input type="button" class="btn green" value="Add New+" id="insertbotheli13"></input>
    <thead>
        <tr>
        <th>Subject</th>
		<th> Marks</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            
            <td>
                <input type="text" class="form-control subject1" name="subject1">
            </td> &nbsp;&nbsp;&nbsp;&nbsp;
			<td>
                <input type="text" class="form-control marks1 allownumericwithoutdecimal" name="marks1">
            </td>
 
        </tr>
    </tbody>
</table>

答案 3 :(得分:0)

你的javascript调用了一个类allownumericwithoutdecimal。如果你修改了这个类,你就会得到答案。 你的代码是:

$(".allownumericwithoutdecimal").on("keyup blur",function (event) {  
           $(this).val($(this).val().replace(/[^\d].+/, ""));
   if(parseInt($(this).val()) <= 0) alert("Marks should be more than Zero");
            if ((event.which < 48 || event.which > 57)) {
                event.preventDefault();
            }
        });

并替换为此代码:

 $(".allownumericwithoutdecimal").keypress(function(event)  {  

                if (!event.which || (49 <= event.which && event.which <= 57) || (48 == event.which && $(this).val())) {
                   /* */
               } else {
                   event.preventDefault();
               }
            });

这对我有用。

  

注意:您还应尝试从html中删除</input>结束标记。