JavaScript中取到form的值的方法

本文介绍了通过不同方法获取HTML表单中输入字段值的技术细节,包括使用表单名称、ID选择器及直接属性访问等方式。
<form action="get.do" method="post" id="fi" name="fn">   
username:<input type="text" id="username"/><br/>
password:<input type="password" id="password"/><br/>
<input type="submit" value="submit">
</form>
<form action="get.do" method="post" id="fi" name="fn">
username:<input type="text" id="username"/><br/>
password:<input type="password" id="password"/><br/>
<input type="submit" value="submit">
</form>
可以通过以下三种方式(我所知道的)来取到值:
var show = document.fn.elements['username'].value;//注意这里fn是form的名字,而不是id
var show = document.getElementById('username').value;
var show = fi['username'].value;//fi是form的id号码
var show = document.fn.username.value;//
<think> 根据用户问题,用户希望了解如何从表单字段规则中获取规则返回。结合提供的引用内容,我们可以从以下几个方面分析: 1. 引用[1]展示了在HTML元素上通过data-rule属性定义规则,例如:`data-rule-xxx="[/^\d{6}$/, '请输入6位数字']"`。这里规则xxx的返回是验证函数和错误消息。 2. 引用[2]演示了使用jQuery Validator添加自定义规则(selectNone),该规则返回一个布尔表示验证是否通过。 3. 引用[3]描述了规则函数的结构:规则函数接收参数(value, element, callback等),并通过返回布尔、调用回调函数或返回Error实例来指示验证结果。 4. 引用[4]展示了一个AJAX验证的例子,服务器返回一个JSON数组,包含字段ID、验证结果布尔和消息。 5. 引用[5]提到AngularJS的表单验证指令(如ng-minlength),这些指令会自动处理验证状态。 因此,获取规则返回方法取决于所使用的验证框架和规则定义方式。以下是常见情况的总结: ### 通过验证框架的API获取返回 - **jQuery Validator**(引用[2][3]): 在自定义规则函数中,可以直接返回布尔,或通过回调函数返回错误信息。验证结果会存储在表单的验证对象中,可以通过`validator.element()`或`validator.form()`方法获取验证结果。 示例代码: ```javascript // 自定义规则 $.validator.addMethod("selectNone", function(value, element) { return value !== "none"; }, "必须选择一项"); // 验证单个元素并获取结果 var isValid = $('#myForm').validate().element('#mySelect'); ``` - **AJAX验证**(引用[4]): AJAX验证通过服务器返回结果。在成功回调中,可以获取服务器返回的JSON数据,其中包含验证结果(布尔)和消息。 示例代码: ```javascript $.validator.addMethod("ajaxUser", function(value, element) { // 发起AJAX请求(通常异步,此处略) // 在成功回调中,根据返回结果调用callback }); // 在AJAX回调中,可以这样处理: // 假设服务器返回:["user", true, null] 或 ["user", false, "此名称已被使用"] // 然后根据返回结果设置验证状态 ``` - **AngularJS**(引用[5]): 在AngularJS中,表单控件的验证状态会反映在表单的$error对象中。可以通过控件的$valid、$invalid等属性获取验证结果。 示例代码: ```html <form name="myForm"> <input name="user" ng-model="user" ng-minlength="5"> </form> <script> // 在控制器中获取验证结果 if ($scope.myForm.user.$valid) { // 验证通过 } </script> ``` ### 直接获取HTML5数据属性定义的规则 如引用[1],规则定义在DOM元素的`data-rule-xxx`属性中。要获取这些规则,可以通过DOM操作读取属性,然后解析。 示例代码: ```javascript var element = document.querySelector('input[name="demo"]'); var ruleString = element.dataset.ruleXxx; // 注意:属性名转换为驼峰格式 // ruleString 的为: '[/^\d{6}$/, \'请输入6位数字\']' ``` ### 总结步骤 1. **确定验证框架**:根据项目使用的验证框架(如jQuery Validator、AngularJS等),使用对应的API获取验证结果。 2. **访问验证状态**: - jQuery Validator:使用`validate()`方法返回的验证器对象,通过`element()`或`form()`方法获取状态。 - AngularJS:通过表单控件的属性(如`$valid`)获取状态。 - 原生JavaScript:通过读取DOM元素的属性或监听事件获取自定义规则的结果。 3. **处理异步验证**:对于AJAX验证(引用[4]),需要在回调函数中处理返回。 ### 代码示例:获取规则返回 假设使用jQuery Validator,以下是如何获取单个字段的验证结果: ```javascript // 初始化验证 var validator = $('#myForm').validate(); // 验证单个字段 var isValid = validator.element('#myField'); // 返回布尔 // 或者直接访问错误消息 var errorMessages = validator.errorsFor('#myField'); if (errorMessages.length > 0) { console.log(errorMessages.text()); } ``` 对于自定义规则,可以在规则函数中返回结果,然后通过上述方式获取。 ### 注意事项 - 同步规则可以直接返回布尔。 - 异步规则(如AJAX)需要使用回调函数,因此获取结果需要在回调中进行。 通过以上方法,可以从表单字段规则中获取规则返回。 §§相关问题§§ 1. 如何自定义jQuery Validator的验证规则? 2. 在AngularJS中如何实现自定义表单验证? 3. AJAX表单验证时如何处理异步响应? 4. 如何获取HTML5数据属性中定义的所有验证规则? </think>### 如何从表单字段规则中获取规则返回 获取表单字段规则的返回通常涉及以下步骤(以常见验证库为例): #### 1. **定义规则时设置返回** 在自定义规则函数中明确返回验证结果(布尔或错误信息),参考引用[2][3]: ```javascript // jQuery Validator 示例 $.validator.addMethod("selectNone", function(value, element) { if (value === "none") { return false; // 验证失败 } return true; // 验证成功 }, "必须选择一项"); ``` #### 2. **通过验证回调获取返回** 在验证执行时通过回调函数接收结果,参考引用[3]: ```javascript $("#myForm").validate({ rules: { /* 规则定义 */ }, submitHandler: function(form) { // 整体验证成功时的返回 form.submit(); }, invalidHandler: function(event, validator) { // 获取所有错误字段的返回 const errors = validator.errorList; errors.forEach(error => { console.log(`字段 ${error.element.name} 验证失败: ${error.message}`); }); } }); ``` #### 3. **操作DOM直接获取规则定义** 从HTML元素的`data-rule`属性中提取规则配置,参考引用[1]: ```javascript const field = document.querySelector('input[name="demo"]'); const ruleString = field.dataset.rule; // "required;xxx" const xxxRule = field.dataset.ruleXxx; // "[/^\d{6}$/, '请输入6位数字']" ``` #### 4. **处理异步验证返回** 对于AJAX验证,在服务器响应中返回结构化数据,参考引用[4]: ```javascript // 服务端返回格式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值