(jquery新手警报!)
我正在尝试使用JQuery / javascript从文本字段中获取值,然后检查它是否> 14天。我的问题是页面(和我的字段的HTML)是不同的,具体取决于应用程序/页面是处于“编辑”模式还是处于“查看”模式。
是否可以编写一个选择器来获取包含在跨度内的val,无论它是在输入字段内还是仅仅是跨度内的文本?例如,可以通过span()。val()获取值吗?我正在努力,但到目前为止还没有成功。
以下是HTML代码段:
编辑模式:
<td class="m1234Bottom" style="width:35%;">
<span id="ABC123" class="Datetime">
<div class="dateElement" id="ABC188c">
<input name="ABC$123ccc"
type="text">
<a class="date"></a>
<a style="display: none;" class="time"></a>
</div>
</span>
</td>
查看模式:
<td class="m1234Bottom" style="width:35%;">
<span id="ABC123">
12/23/2012
</span>
</td>
我可以通过以下方式获取'edit'值:
$("input[name*='123ccc']".each(function() {
var outv= $(this).val();
alert(outv);
});
是否有更好的JQuery可以在编辑或查看代码中找到该值?
很抱歉,如果选择/ each / this.val链接让你感到畏缩。我第一次探索jquery只需几个小时。随意嘲笑或指出更好的方法;我甚至不需要解释 - 我可以RTFWebDoc。但是,如果有人没有干预,我会坚持通过javascript这样做:接下来将是一个讨厌的if / then代码块,然后另外几个小时的试错和stackoverflow-读取来学习jquery错误检查null-值,然后在我最终达到目标之前重新发现javascript的字符串到日期函数:'这个日期&gt; 14天了吗?'
谢谢,
答案 0 :(得分:2)
如果我理解正确,您希望获得span id#ABC123的文本值或名称为ABC $ 123ccc的输入值。
在这种情况下,根据您提供的代码段,您可以尝试以下方式:
var span = $('#ABC123');
//check if span has input child
if (span.find('input').length > 0) {
//get value from input field
var date = span.find('input').val();
}
else {
//get text date from the span
var date = span.text();
}
答案 1 :(得分:1)
$(function() {
$('#ABC123').find('input').length > 0 ? value = $('#ABC123').find('input').val() : value = $('#ABC123').text();
console.log(value);
});
jsFiddle:http://jsfiddle.net/63QF6/41/
在小提琴中,将范围ID中的一个更改为#ABC123之外的任何内容,以模仿更改视图。
答案 2 :(得分:0)
不幸的是,你不能对span使用val()函数。根据JQuery网站的定义:
.val()方法主要用于获取表单元素的值,例如input,select和textarea。
如果要检索跨度的值,则应使用.text()或.html(),因为跨度的内容不是“值”,而是跨度的内容(跨度coulb包含其他内容)节点,与输入不同。)
但你可以创造一个独特的功能,如:
function retrieveValue()
{
// Retrieve the element (not guess yet)
var spanOrInput = $("#ABCD123");
// Try to guess if its an input or a span
var type = spanOrInput.attr('type');
if (typeof type == "undefined" || !type)
return spanOrInput.val();
else
return spanOrInput.html();
}
答案 3 :(得分:-1)
你有什么理由不能这样做:
<input type="hidden" id="hidtype" />
然后基于天气它是视图模式或编辑模式存储,然后,在这个隐藏的字段,
$(function(){
if ($('#hidtype').val() == '1') { //or what ever you use to set state
// code here for that mode
}
else{
// code for other type of mode
}
});
如果你坚持这样做,你可以检查输入是否像这样存在
if( $('#ABC123 input').length ) {
//this means the input exists - handle from here
}