如何验证单选按钮组SimpleSchema

时间:2015-07-28 08:45:50

标签: meteor

例如,我有4个单选按钮,只能检查1个按钮。

<label class="radio-inline">
    <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="Programming"> Programming
</label>
<label class="radio-inline">
    <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="Design"> Design
</label>
<label class="radio-inline">
   <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="Finance"> Finance
</label>
<label class="radio-inline">
  <input type="radio" name="inlineRadioOptions" id="inlineRadio4" value="Finance"> Other Category
</label>

我也使用Simple Schema来验证值,但是在文档中我找不到如何验证单选按钮,也许任何人都可以帮助我?

或者我必须在没有Simple Schema的情况下这样做?

1 个答案:

答案 0 :(得分:0)

您可以像使用常规输入框一样验证该值。不同之处在于,您必须验证已检查单选按钮的值。

例如,您在HTML上有这个:

<input type="radio" name="foobar" class="fetch_value" value="foo" checked> Foo<br>
<input type="radio" name="foobar" class="fetch_value" value="bar"> Bar<br>

你在js上有这个:

var fetched_values = document.getElementsByClassName("fetch_value");
for (var i=0; i< fetched_values.length; i++) {
    if (fetched_values[i].checked == true) {
        validate ("field_name", fetched_values[i].value);
    }
}

(...)

function validate (id, value) { 
    //Schemas.mySchema is the Schema name & myContext is a context of your choice
    var SchemaLink = Schemas.mySchema.namedContext("myContext");
    temp_obj = {};
    temp_obj[id] = value;
    var isValid = SchemaLink.validateOne(temp_obj, id);
    if (!isValid) {
        // invalidKeys is an array, even if you validate just one object
        var error = SchemaLink.invalidKeys();
        alert (Schema_link.keyErrorMessage(error[0].name) );
    }
}

这应该在客户端验证,在服务器端执行,您可以在插入代码之前使用非常相似的代码(或使用Collection2包,并使用SimpleSchema验证每个插入/更新)

相关问题