问题
How can I find all text fields that have an empty value?
$(":text[value='']")
gives a JavaScript error
I know I can do $(":text")
, iterate through and return all fields with $(this).val()==''
I am looking for a cleaner method and using JQuery 1.3.1
It has to work if the element originally had a value when the page was loaded, and then the user cleared it. ($("#elem").attr('value')
gives the original value in that place, though .val() works properly)
回答1:
Latest Answer: Upgrade to 1.3.2
Here are various tests I ran via FireBug on http://docs.jquery.com/Downloading_jQuery
Different jQuery versions are switched in at page-load with special greasemonkey scripts.
>>> jQuery.prototype.jquery
"1.3.2"
>>> jQuery(":text[value='']")
[input#jq-primarySearch]
Unknown pseudo-class or pseudo-element 'text'.
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]
>>> jQuery.prototype.jquery
"1.3.1"
>>> jQuery(":text[value='']")
Syntax error, unrecognized expression: value='']
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]
>>> jQuery.prototype.jquery
"1.3"
>>> jQuery(":text[value='']");
Object length=1 prevObject=Object context=document
Unknown pseudo-class or pseudo-element 'text'.
[Break on this error] undefined
>>> jQuery(":text[value=]").get()
[input#jq-primarySearch]
Note that 1.3 and 1.3.2 handle it properly ( albeit with Firefox sending an error ) but they still get the node right.
Alternatively: you could use the :text[value=]
notation, which appears to work everywhere I tried it. Its just a bit suspect thats all.
( Ignore my Previous rantings, they're all bollocks, not having a good day -_-)
回答2:
I've just tried this and worked fine for me:
$(":text[value=]")
I just removed single quotes in selector.
回答3:
You were close. There's no assignment in jQuery selectors, so you only need a single '=':
$(":text[value='']")
回答4:
This seems to work for me
$(":text:not([value])")
回答5:
The following code does this:
- Searches the form for inputfields and textareas
- Checks if the text value is empty or not
gives the textfield/textarea a black background-color to prove this works
$('form').find("input[type=text], input[type=password], textarea").each(function(ev) { if(!$(this).val()) { $(this).css("background-color","black"); } });
回答6:
Shot in the dark as I haven't tested it, but does this work:
$(":text:empty")
来源:https://stackoverflow.com/questions/635240/selecting-all-empty-text-fields-in-jquery