0

我在 Facebook 应用程序上使用了 FBJS 的表单验证问题。我检查了文档上的验证示例,我可以使用 form.serialize(); 检查文本框值。但不幸的是,我不知道如何检查下拉列表和复选框值。

提前致谢..

4

3 回答 3

2

对于复选框和单选按钮,使用如下代码:

if (document.getElementById("checkbox_or_radio_button_id_here").getChecked() == true)
{
    // yes it was checked
}

对于下拉:

if (document.getElementById("dropdown_id_here").getValue() != '')
{
    // yes dropdown was not empty
}

我个人不在 facebook 验证中使用序列化,我只是使用上面的简单代码。

谢谢,希望有帮助。

于 2009-12-11T07:03:37.160 回答
0

我发现了一种方法,虽然不是很优雅,但它很简单,并且使用 serialize() 效果很好。

我的表单代码片段:

<select name="state" id="states" class="required">

    <option value=""></option> 
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <option value="AZ">Arizona</option>
    <option value="AR">Arkansas</option>

</select>

<input value="radio1" type="radio" name="radioPicks" class="radio"/>
<input value="radio2" type="radio" name="radioPicks" class="radio"/>
<input value="radio3" type="radio" name="radioPicks" class="radio"/>
<input type="hidden" name="radioPicks" value="">

FBJS 需要让它工作:

<script type="text/javascript">
<!--



function checkForm(form) {

    var params=form.serialize();

    if (params.state.length>0 && params.radioPicks!="")

        return true;

    else
        var myDialog = new Dialog(Dialog.DIALOG_POP);
    myDialog.showMessage('Almost Done!', 'Please complete all fields', button_confirm='Close');

    return false;
} 
-->
</script>

此验证方法的关键依赖于一个空option标签来为选定的标签值返回“”,并为单选按钮返回一个“”。我添加了一个隐藏输入并将其命名为与单选按钮相同的名称,以将其数据添加到返回的数组中。"" 值在条件中用于检查并说明这些字段是否不为空,给表单确定将信息发送到服务器。我希望这有帮助。

于 2010-01-29T16:27:35.773 回答
0

我也在使用简单的代码。我不知道为什么当我提交错误时,我得到了对话并且表单继续并提交。

//....
var txt ='输入邮政编码';
函数集错误(){
    var obj=document.getElementById('mapsearch');
        obj.setValue(txt);
        obj.setStyle('颜色', '红色');
}
函数 valform(){
    var obj=document.getElementById('mapsearch');
    var val = obj.getValue();
    if(val!='' && !isNaN(val) && val.length>2 ){
        返回真;
    } 别的 {
        设置错误();
        (new Dialog()).showMessage('需要邮编', '请输入您的邮编。');
        返回假;
    }
}



...
于 2010-10-21T07:30:31.827 回答