- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 jQuery Validate 错误类以某种方式显示,但我很难让它工作。我希望验证消息直接出现在我的输入下方。现在它们出现在我的输入下,但是整个输入跳到下一行。
输入设置自然是这样的:
姓名--电话号码--邮箱
我希望消息显示如下:
姓名--电话号码--邮箱
留言--留言--留言
现在它正在做:
名字
留言
数量
留言
电子邮件
留言
HTML 看起来像这样:
<form action="" method="POST" id="contact-form1">
<input type="text" class="contact-input show-input" name="name" id="name" placeholder="Name *">
<input type="text" class="contact-input show-input" name="number" id="number" placeholder="Phone Number *">
<input type="text" class="contact-input show-input" name="email" id="email" placeholder="Email *">
<input type="text" class="contact-input hidden-input" placeholder="Company Name">
<input type="text" class="contact-input hidden-input" placeholder="Title">
<input type="text" class="contact-input hidden-input" placeholder="Referral">
<textarea class="contact-message" rows="10" name="message" id="message" placeholder="Your Message*"></textarea>
<input type="submit" value="Submit" id="contact-submit">
</form>
我尝试将 div 包裹在每个输入周围,但这会将每个输入以 block 格式放在新的一行上。
这是一个 fiddle ,可以看到它在做什么:Fiddle
我做错了什么?
更新:
submitHandler: function(form) {
var name = $("#name").val();
var number = $("#number").val();
var email = $("#email").val();
var message = $("#message").val();
/*var company_name = $("#company_name");
var title = $("#title");
var referral = $("#referral");*/
//var targeted_popup_class = jQuery(this).attr('data-popup-open');
$.ajax({
url: "map-send.php",
type: "POST",
data: {
"name": name,
"number": number,
"email": email,
"message": message
/*"company_name": company_name,
"title": title,
"referral": referral*/
},
success: function(data) {
在上面的代码中,您会看到注释掉的元素。这些是未经验证的元素。出于某种原因,当我删除评论标签时,我的页面就死了。没有错误,它只是在我提交页面时卡住。我尝试将变量放在验证标签之外,但仍然无济于事。你知道为什么这会终止页面吗?
最佳答案
您不能设置 the onfocusout
option为 true
。它覆盖了插件的内部功能,从而破坏了它。它只能设置为 false
以禁用此选项或覆盖功能。否则,请保留此选项以保留默认情况下处于事件状态的 onfocusout
行为。
您在某些输入值上缺少 .val()
,因此您试图传递整个 jQuery 对象而不仅仅是它的值。但是,与其尝试在 .ajax()
函数中手动指定每个值,不如使用 jQuery .serialize()
传递整个表单的数据字符串。
data: $("#contact-form1").serialize(),
在 submitHandler
函数中的任何地方,您都可以使用传递的 form
参数变量...
data: $(form).serialize(),
使用 errorElement
和 errorPlacement
选项来确定错误消息在 DOM 中的显示方式/位置。
errorElement
默认为 label
(内联元素),您可以将其更改为 div
( block 级元素)或您可能需要的任何元素。默认值如下所示。
errorElement: 'label', // default
errorPlacement
默认在输入元素之后插入错误信息。在您的情况下,您的结构会导致它换行,从而破坏您的布局。如果您希望消息出现在 DOM 中的其他地方,那么您需要编写一个新的 errorPlacement
函数。默认值如下所示作为示例。
errorPlacement: function(error, element) {
error.insertAfter(element); // default
},
您的根本问题是您在设计表单布局时没有考虑到错误消息。您需要重新开始并制作一个可以将错误消息元素容纳在您想要的确切位置的布局。然后这两个自定义 jQuery Validate 函数可以动态创建错误消息元素并将其插入到您想要的位置。
概念验证示例:
HTML
<form>
<div class="input">
<input type="text" name="name" />
</div>
<div class="input">
<input type="text" name="number" />
</div>
....
JavaScript
$("#contact-form1").validate({
errorElement: 'div',
errorPlacement: function(error, element) {
error.insertAfter(element); // default
},
rules: { ....
演示:https://jsfiddle.net/ng3a9xwz/
编辑:
检查实时 DOM 揭示...
<form novalidate="novalidate">
<div class="input">
<input type="text" name="name" class="error" />
<div for="name" class="error">Please enter your name</div>
</div>
....
errorElement: 'div'
将错误消息放入 div
并且默认的 errorPlacement
插入这个新的 div
紧跟在 input
元素之后。设计您的布局(CSS 和 HTML)以正确适应这些选项。您可以使用实时 DOM 中的标记进行布局测试。
关于jquery - 验证错误消息样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37279752/
在带有 jQuery 的 CoffeeScript 中,以下语句有什么区别吗? jQuery ($) -> jQuery -> $ - > 最佳答案 第一个与其他两个不同,就像在纯 JavaScr
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭13 年前。 Improve th
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
这个问题可能听起来很愚蠢,但请耐心等待,因为我完全是初学者。我下载了两个 jQuery 版本,开发版本和生产版本。我想知道作为学习 jQuery 的初学者,什么更适合我。 最佳答案 如果您对 jQue
The documentation说要使用 1.6.4,但我们现在已经升级到 1.7.2。 我可以在 jQuery Mobile 中使用最新版本的 jQuery 吗? 最佳答案 您当然可以,但如果您想
我在这里看到这个不错的 jquery 插件:prettyphoto jquery lightbox有没有办法只用一个简单的jquery来实现这样的效果。 我只需要弹出和内联内容。你的回复有很大帮助。
很明显我正在尝试做一些 jQuery 不喜欢的事情。 我正在使用 javascript 上传图片。每次上传图片时,我都希望它可见,并附加一个有效的删除脚本。显示工作正常,删除则不然,因为当我用 fir
这两个哪个是正确的? jQuery('someclass').click(function() { alert("I've been clicked!"); }); 或 jQuery('somec
我正在寻找一个具有以下格式的插件 if (jQuery)(function ($) { -- plugin code -- })(jQuery); 我明白 (function ($)
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我知道这个问题已经被问过几次了,但想知道您是否可以帮助我解决这个问题。 背景:我尝试创建一个使用 Ajax 提交的表单(jQuery 表单提交)。我已经工作得很好,然后我想在表单上得到验证。我可以使用
我正在使用无处不在的jquery validate plugin用于表单验证。它支持使用metadata plugin用于向表单元素添加验证规则。 我正在使用此功能。当验证查找这些规则时,它会对元素进
我更喜欢为我一直在开发的网络社区添加实用的视觉效果,但随着事情开始堆积,我担心加载时间。 拥有用户真的更快吗加载(希望是缓存的)副本来自 Google 存储库的 jquery? 是否使用 jQuery
这个问题已经有答案了: Slide right to left? (17 个回答) 已关闭 9 年前。 你能告诉我有没有办法在 jQuery 中左右滑动而不使用 jQuery UI 和 jQuery
我如何找出最适合某种情况的方法?任何人都可以提供一些示例来了解功能和性能方面的差异吗? 最佳答案 XMLHttpRequest 是原始浏览器对象,jQuery 将其包装成一种更有用和简化的形式以及跨浏
运行时 php bin/console oro:assets:build ,我有 11 个这样的错误: ERROR in ../node_modules/jquery-form/src/jquery.
我试图找到 jQuery.ajax() 在源代码中的定义位置。但是,使用 grep 似乎不起作用。 在哪里? 谢谢。 > grep jQuery.ajax src/* src/ajax.js:// B
$.fn.sortByDepth = function() { var ar = []; var result = $([]); $(this).each(function()
我的页面上有多个图像。为了检测损坏的图像,我使用了在 SO 上找到的这个。 $('.imgRot').one('error',function(){ $(this).attr('src','b
我在理解 $ 符号作为 jQuery 函数的别名时遇到了一些麻烦,尤其是在插件中。你能解释一下 jQuery 如何实现这种别名:它如何定义 '$' 作为 jQuery 函数的别名?这是第一个问题。 其
我是一名优秀的程序员,十分优秀!