如何控制输入值?

时间:2012-08-17 09:21:26

标签: javascript jquery ajax html5

我在搜索表单中使用了2个相同的输入。我想控制数据输入。例如,用户在任何时间间隔内输入时间或价格。第二个值必须大于第一个值。 如何让用户无法向第二个字段输入更大的值?

约会:

@Html.TextBox( "date1", string.Empty, new { @class = "dateClass", type_datepicker = "true", @id = "datepicker" } )
@Html.TextBox( "date2", string.Empty, new { @class = "dateClass", type_datepicker = "true", @id = "datepicker2" } )

和价格:

@Html.TextBox( "price1", string.Empty, new { @class = "priceClass" } )
@Html.TextBox( "price2", string.Empty, new { @class = "priceClass" } )

date1 date2 是字符串, price1 price2 是双倍的。抱歉我的英文不好..

1 个答案:

答案 0 :(得分:1)

您需要对此进行调整,以使其匹配您的后端代码返回的任何内容

您可以在此处选择一些选项,您可以在用户提交表单时或用户停止输入时进行验证。提交非常简单

if ($('#second').val() > $('#first').val()){
      return false;
   }

比较日期,check this out

或者您可以在用户停止输入时执行此操作,这要归功于this great answer您可以执行此操作

$(document).ready(function(){
var typingTimer;                //timer identifier
var doneTypingInterval = 1000;  //time in ms, 1 second for example

 //on keyup, start the countdown
$('#second').keyup(function(){
    typingTimer = setTimeout(doneTyping, doneTypingInterval);
 });

 //on keydown, clear the countdown
    $('#second').keydown(function(){
    clearTimeout(typingTimer);
  });

 //user is "finished typing," do something
  function doneTyping () {
     if ($('#second').val() > $('#first').val()){
      alert('cannot do that');        //take whatever action you need here
   }
  }
});

此外,对于datepickers,如果您使用的是jQuery UI datepicker,则可以选择禁用某些日期范围,这样您就可以使用它来禁用早于第一个datepicker值的任何内容(但同样是只是客户端检查,如果这对您的应用程序至关重要,您将不得不使用C#或您正在使用的任何语言进行后端检查)