为什么Bootsrtap中用$(".form-control").val()不能获取input的值?

为什么Bootsrtap中用$(".form-control").val()不能获取class为form-control的input的值?
为什么会这样?
我给相应的input加个其它的class,用其它的class来获取值得就完全没有问题。

阅读 5.9k
8 个回答

那说明你加了form-control样式的标签不止一个吧

你应该先运行一下$(".form-control").length,看看有没有找到,找到了几个

最好加个id吧,bootatrap里的class会用在很多标签上

form-control是框架里带的,最好自己定义一个id

bootstrap里很多都要用到这个类的吧,我觉得你应该是可以取到应用了这个类的元素的,可以调试下看看啊

用其他class作为选择器
form-control作为bootstrap里自带的 建议不要采用其作为选择器的标签

$(".form-control").val() 这是 jQuery 的方法,其实跟 Bootstrap 没关系。

$.fn.val 方法用于获取查找到的第一个元素的值,如果是 select,checkbox,radio 则返回选中的值(可以是多个)

也就是说,您得看看 $(".form-control") 都是对应哪些元素,什么类型,第一个是哪个。如果想测试,可以在 chrome 或 firefox 或 ie 下按 f12(OSX 里是 Option+Command+i) 打开开发工具,切换到控制台(Console)下,输入 $(".form-control") 或 $(".form-control").val() 后回车查看。如果有报错看报什么错。

页面上可能有很多 class为 form-control 的 元素 所以你直接取值不能取出来

你可以现尝试

alert($("input.form-control").size())

如果弹出的数字大于1 那就证明我的猜想是对的。下面是详细的解决方法。

你可以尝试这样 缩小一下范围 只查找 input的class为form-control的元素
代码如下:

$("input.form-control").val()

或者获取指定第几个的class为 form-control 的val
代码如下:

//eq(0) 代表第一个class为`form-control`的元素  你可以自己填写需要的
$("input.form-control").eq(0).val()

当然最好还是 给要获取的元素 单独一个class
这样更加好区分,代码更加清晰

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题