【问题标题】:Fuelux wizard validation inputFuelux 向导验证输入
【发布时间】:2013-08-09 05:36:26
【问题描述】:

我已经制作了一个嵌套在fuelux 向导中的表单。如果此人单击下一步按钮,则不会显示 bookstrap 必填字段。是否有任何方法可以要求用户在输入必填字段之前无法通过单击下一步来继续?

这是一个输入示例

  <tr>
  <td>3</td>
    <td><label class="control-label" for="inputCompanyCountry">Country <span style="color:red">*</span></label></td>
    <td><div class="controls controls-extra"><input type="text" id="inputCompanyCountry" name="inputCompanyCountry" value=""required></div></td>
    <td><div class="help-inline">Country of residence</div></td>
  </tr>

用于下一个和上一个按钮的脚本

$(function() {
$('#MyWizard').on('change', function(e, data) {
    console.log('change');
    if(data.step===3 && data.direction==='next') {
        // return e.preventDefault();
    }
});

$('#MyWizard').on('changed', function(e, data) {
    console.log('changed');
});
/*$('#MyWizard').on('finished', function(e, data) {
    console.log('finished');
});*/
$('#btnWizardPrev').on('click', function() {
    $('#MyWizard').wizard('previous');
});
$('#btnWizardNext').on('click', function() {
    $('#MyWizard').wizard('next','foo');
});


$('#btnWizardStep').on('click', function() {
    var item = $('#MyWizard').wizard('selectedItem');
    console.log(item.step);
});
});

【问题讨论】:

    标签: jquery twitter-bootstrap fuelux


    【解决方案1】:

    我做了什么:

    $('#MyWizard').on('change', function(e, data) {
        var isValid = $('#stepId [required]').valid();
        if (data.direction === 'next' && !isValid) {
            e.preventDefault();
        }
    });
    

    如果您想禁用双向移动,只需删除 data.direction ==='next' 部分。

    【讨论】:

    • 您是如何获得#stepId 的?努力解决这个问题
    • '#stepId' 是您要跳过的步骤的 'id'。
    【解决方案2】:

    如果您想在不发送表单的情况下进行验证,可以使用 jquery.validate。使用方法$("#form_id").valid();,它根据表单的状态返回真或假,将类“必需”添加到有问题的输入中。

    $('#MyWizard').on('change', function(e, data) {
        console.log('change');
        if(data.step===3 && data.direction==='next') {
            if($("#form_id").valid()){
                // allow change
            }else{
                // cancel change
            }
        }
    });
    

    【讨论】:

    • bootply.com/72771 这是我的问题的一个例子。在输入字段中输入值之前,用户应该无法传递下一个按钮。
    【解决方案3】:

    另一种选择是将每个步骤包装在一个表单中,然后在提交时浏览器将不会继续,直到填写了必填字段。这取决于浏览器支持表单中的“必需”属性作为 HTML5 规范的一部分,但您也许可以使用它。此答案中有一些链接出现问题,但也有一些起始信息:How to bind to the submit event when HTML5 validation is used?

    【讨论】:

    • 问题是表单被分成几个部分,所以如果用户在 chevron #3 上,他们看不到 chevron #1 上的必填字段。如果他们在填写必填字段之前无法单击“下一步”按钮,那将是最好的选择。
    • 在这种情况下和上面的答案中,您需要做的是对按钮应用“禁用”属性。然后,您将在通过验证时触发一些事件,并且您还需要一个事件处理程序来侦听该事件并删除 disabled 属性。所以没有一种方法可以做到这一点,但要编写的代码并不多。使用上面 Birkto 给出的示例,您可以将代码用于删除他拥有 // allow change 的 disabled 属性
    猜你喜欢
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多