JQuery - 除非值不为NULL,否则禁用表单?

时间:2014-07-03 01:28:36

标签: javascript php jquery html5

不太熟悉JQuery,但我基本上试图做同样的事情:

Inputs disabled until previous input filled in

..这个问题得到了成功解答,这是最合适的答案:http://jsfiddle.net/WYhNm/(代码I' m也在使用)

...但是,在我的情况下,有一个例外:如果该字段已经有一个值,并且该值不为空,那么它就不应该被禁用。这样做的原因是因为我正在使用PHP / HTML5表单,在提交之前允许预览 - 因此字段的值将通过表单传递,然后返回到该字段的值全部在同一页面上。

示例:

//PHP
    $tag1 = $_POST["Tag1"];
    $tag2 = $_POST["Tag2"];
    $tag3 = $_POST["Tag3"];
$output ='<form method="post" name="post_form" 
action="process_post.php">
     <input type="text" class="tag" name="Tag1" value="' . $tag1 . '">
     <input type="text" class="tag" name="Tag2" value="' . $tag2 . '" disabled>
     <input type="text" class="tag" name="Tag3" value="' . $tag3 . '" disabled>
     <button type="submit" name="submit" value="publish_post">Publish Post</button>
     <button type="submit" name="submit" value="preview_post">Preview Post</button>
     </form>';

我已经尝试使用我的PHP知识在jQuery中运行比较 - 这不是很好,因为我不知道我在做什么:

    var next_step = $(this).next('.tag');
var input = $(this).val('.tag');

if ($(this).val()) {
    next_step.attr('disabled', false);
}

elseif ( input == "" ) { //Is elseif even valid here?
    next_step.attr('disabled', true);
}

tl; dr - 使用this JSFiddle,如何启用&#34;禁用&#34;字段,如果他们的value =任何非空的?

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题。

$('.step').change(function() {
    var next_step = $(this).next('.step');
    // If the element *has* a value
    if ($(this).val()) {
        next_step.attr('disabled', false);
    }
    // If the element doesn't have a value
    else {
        if(!next_step.val()) next_step.attr('disabled', true); // <--
    }
});

仅在元素值的计算结果为false时禁用。

if(!next_step.val()) next_step.attr('disabled', true); // <--

希望这有帮助!