如果输入字段为空,请填写随机数

时间:2014-05-23 06:18:34

标签: javascript jquery html forms random

我想用随机数填充所有空数字段。我可以使用随机数填充所有字段,如下所示。

    $.each(numberField, function () {
        x = Math.floor((Math.random() * 10) + 1);
        ($(this).val(x));
    });

但是,如果我尝试将其包裹在

    if (numberField.val() === "")

它不起作用

我在这里做错了什么? see fiddle

    <input type="number" value="0">
    <input type="number" value="">
    <input type="number" value="4">
    <input type="number" value="5">
    <input type="number" value="">

    var numberField = $('input[type=number]');
    var x = '';
    if (numberField.val() === "") {
        $.each(numberField, function () {
            x = Math.floor((Math.random() * 10) + 1);
            ($(this).val(x));
        });
    }

6 个答案:

答案 0 :(得分:3)

您需要移动您的条件(您正在查看数组是否等于&#34;&#34;,从未出现过这种情况)。您还需要修剪该值以检查它是否真的为空:

var numberField = $('input[type=number]');
var x = '';

$.each(numberField, function () {
    if ($.trim($(this).val()) === "") {
        x = Math.floor((Math.random() * 10) + 1);
        ($(this).val(x));
    }
});

答案 1 :(得分:1)

在您的示例中,numberField是一个数组,因此您的代码必须如下所示:

var numberField = $('input[type=number]');
var x = '';

    $.each(numberField, function () {
       if ($(this).val() === "") {
          x = Math.floor((Math.random() * 10) + 1);
          $(this).val(x);
        }
    });

答案 2 :(得分:0)

请参阅updated fiddle

$.each(numberField, function (k, v) {
  if ($(v).val() === "") {
    x = Math.floor((Math.random() * 10) + 1);
    ($(v).val(x));
  }
});

查看jQuery每个函数的doc

答案 3 :(得分:0)

试试这个......

var numberField = $('input[type=number]');
var x = '';

$.each(numberField, function () {
    if (this.value === "") { // should check the value inside the loop.. not outside
        x = Math.floor((Math.random() * 10) + 1);
        this.value = x;
    }
});

demo

答案 4 :(得分:0)

我认为问题在于:

numberField.val()

相反,请使用

$(this).val()

所以......

var numberField = $('input[type=number]');
var x = '';
$.each(numberField, function () {
    alert($(this).val());
    if ($(this).val() === ""){
        x = Math.floor((Math.random() * 10) + 1);
        ($(this).val(x));
    };
});

更新了小提琴 http://jsfiddle.net/aaronk85/eC48k/

答案 5 :(得分:0)

您只能匹配没有值的字段,如下所示:

$('input[type=number][value=""]').each(function () {
        this.value=Math.floor((Math.random() * 10) + 1);
});

这里是demo