根据自定义集变量验证文本框

时间:2009-11-03 14:14:57

标签: jquery validation forms variables textbox

我有一个我想要创建的表单,用户每个文本框输入一个数字。当用户点击按钮时,我需要所有这些数字都是正确的 - 想象一下iPhone Passcode锁定功能。

理想情况下,我希望按钮只有在所有数字都正确时才可点击(可能是我定义的变量) - 否则它不会执行操作。

HTML -

<form id="journey">
  <input name="code1" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code2" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code3" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code4" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code5" type="text" class="code onlyNumeric"  maxlength="1" />

  <input type="button" class="button" value="Next location" />
</form>

目前我看到我是否可以在jQuery / Javascript中使用它,但我不确定如何解决这个问题。

我真的很感激这方面的一些帮助。谢谢。

5 个答案:

答案 0 :(得分:1)

你可以这样做。请注意,这未经过测试,但逻辑应该有意义。 isNumeric不是实际的函数btw,因此您需要定义自己的数字检查。:

$(function() {
$("#journey input").keyup(function() {
    // Fetch all the fields and test that they are all numeric.
    var $code_fields = $("#journey input[class='onlyNumeric']");
    var all_numeric = true;

    $code_fields.each(function(i, el) {
       if (!isNumeric($(el).val())) {
        all_numeric = false;
       }
    });

    // You will need to give your Next Location button some kind of id.
    if (all_numeric == true) {
        $("#next_location_btn").attr("disabled", "false");
    }
});
});

此外,在页面加载时将“下一个位置”按钮设置为禁用。您可能希望通过JS设置,但用户没有启用Javascript,因此您可以很好地退回。

答案 1 :(得分:0)

   $(".onlyNumeric").keydown(
        function(event){
            // get the ASCII value for the key that was pressed
            if(event.keyCode < 48 || event.keyCode > 57){
                return false; // don't add the value to the input because it's not 0-9
            }
        }
    );

那应该让你在那里的大部分路上。祝你好运!

答案 2 :(得分:0)

这确实有帮助。我没想到要在页面加载时禁用该按钮。

为了帮助进一步解释,我编写了代码来检查是否只输入了数字,以及一些悬停效果:

$(document).ready(function() {

<!--Form input-->
$('.onlyNumeric').numeric();

<!--Turn the input box focus on and off-->
    $('input[type="text"]').addClass("idleField");
    $('input[type="text"]').focus(function() {
        $(this).removeClass("idleField").addClass("focusField");
        if (this.value == this.defaultValue){ 
            this.value = '';
        }
        if(this.value != this.defaultValue){
            this.select();
        }
    });
    $('input[type="text"]').blur(function() {
        $(this).removeClass("focusField").addClass("idleField");
        if ($.trim(this.value) == ''){
            this.value = (this.defaultValue ? this.defaultValue : '');
        }
    });
});

从jQuery插件中使用onlyNumeric类。

我所坚持的是验证方面。我如何设置说数字1,2,3,4,5是导致按钮转到另一个网页的唯一数字。我想象设置一个可以对照的变量。

我清楚地解释了自己吗?! :谢谢。

答案 3 :(得分:0)

我将我的解决方案基于jQuery的AlphaNumeric plugin。此插件允许您执行numeric()功能,但也可以通过允许您执行自定义覆盖来屏蔽某些字符/允许其他字符来扩展它。在您的情况下,假设您希望以下输入字段仅接受1-5包含的数字:

<form id="journey">
  <input name="code1" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code2" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code3" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code4" type="text" class="code onlyNumeric"  maxlength="1" />
  <input name="code5" type="text" class="code onlyNumeric"  maxlength="1" />

  <input type="button" class="button" value="Next location" />
</form>

使用上述插件的相应jQuery代码如下所示:

$('#journey input.onlyNumeric').numeric({ichars:'67890'});

简单地说:这使得该字段中的字符6,7,8,9和0无效。此技术还可用于允许其他字符(如浮点值的句点):

$('#journey input.onlyNumeric').numeric({ichars:'67890', allow:'.'});

可以在插件的网站上找到其他文档。当然,记住不仅要检查Javascript中的有效输入,还要提交提交,因为并非所有用户都可以使用javascript。

祝你好运,先生!

答案 4 :(得分:0)

使用范围验证:

头部区域:

  <script src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/lib/jquery.delegate.js"></script>
<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script>
<script type="text/javascript">
jQuery.validator.setDefaults({
    debug: true,
    success: "valid"
});;
</script>

<script>
  $(document).ready(function(){
    $("#myform").validate({
  rules: {
    field: {
      required: true,
      range: [13, 23]
    }
  }
});
  });
</script>

身体内容

<form id="myform">
  <label for="field">Required, minium 13, maximum 23: </label>
  <input class="left" id="field" name="field" />
  <br/>
  <input type="submit" value="Validate!" />
</form>