什么';这个Javascript条件有什么问题?
我有一个Javascript函数,如下所示:什么';这个Javascript条件有什么问题?,javascript,validation,Javascript,Validation,我有一个Javascript函数,如下所示: function validateInput() { var search_text = document.getElementById('search_text').value; var size = document.getElementById('size').value; var submitButton = document.getElementById('sb_search'); submitButton
function validateInput() {
var search_text = document.getElementById('search_text').value;
var size = document.getElementById('size').value;
var submitButton = document.getElementById('sb_search');
submitButton.removeAttribute('disabled');
var filter = /^[\x20-\x7E]+$/;
if (filter.test(search_text) && filter.test(size)) {
return true;
} else {
submitButton.setAttribute('disabled', 'disabled');
}
}
if (filter.test(search_text)){
return true;
}
如果输入字段search_text和size满足正则表达式,则应允许提交表单。但即使我输入了正确的值,它也不允许我提交表单。如果我只使用这样的条件,它就会工作:
function validateInput() {
var search_text = document.getElementById('search_text').value;
var size = document.getElementById('size').value;
var submitButton = document.getElementById('sb_search');
submitButton.removeAttribute('disabled');
var filter = /^[\x20-\x7E]+$/;
if (filter.test(search_text) && filter.test(size)) {
return true;
} else {
submitButton.setAttribute('disabled', 'disabled');
}
}
if (filter.test(search_text)){
return true;
}
我希望两个输入字段都满足正则表达式。我错过了什么
编辑
HTML
{%csrf\u令牌%}
过滤您的搜索
-
滤器
按日期
按大小
-
日期:
-
尺寸:
我认为您的HTML语法可能缺少一些结束或开始标记。我试图纠正他们
<form action="/search/" id="ui_element" class="sb_wrapper">
{% csrf_token %}
<p> <-- missing opening p tag
<input class="sb_input" type="text" id="search_text" name="search_text" placeholder="Search by Name ...">
<input class="sb_search" id="sb_search" type="submit" value="Go" onclick="validateInput()" >
</p>
<ul class="sb_dropdown" style="display:none;">
<li class="sb_filter">Filter your search</li>
<li>
<select id="selectmode" name="selectmode" class="filter">
<option value="filter">Filter</option>
<option value="date">By date</option>
<option value="size">By size</option>
</select>
</li>
<li class="bydateinputs" style="display: none">
<label> Date:</label>
<input type="text" id="date_picker" style="width:100px;" name="date" class="text_search" />
</li>
<li class="bysizeinputs" style="display: none">
<label> Size:</label>
<input type="text" id="size" style="width:100px;" name="size" placeholder="eg: 4 MB" class="text_search" />
</li>
</ul>
{%csrf_令牌%}
您可能遇到的问题是“提交”按钮仍处于禁用状态。当您单击它时,您将禁用它,如果之后用户编辑其输入,则现在无法提交,因为该按钮仍处于禁用状态
当按钮被禁用时,它不会生成单击事件,因此代码不会再次运行
id为size
的元素没有值(事实上,它甚至不可见,至少最初不可见,因为它位于样式为display:none
的元素中),并且正则表达式不允许空字符串
将正则表达式从/^[\x20-\x7E]+$/
更改为/^[\x20-\x7E]*$/
,以便允许空字符串
顺便说一句:我怀疑你打算用一些你没有展示给我们的javascript使该元素可见。称之为
onclick=“return validateInput();”
除此之外,你也不需要写else子句。。在你的JS中
你的JS可能是
function validateInput() {
var search_text = document.getElementById('search_text').value;
var size = document.getElementById('size').value;
var submitButton = document.getElementById('sb_search');
var filter = /^[\x20-\x7E]+$/;
if (filter.test(search_text) && filter.test(size)) {
submitButton.removeAttribute('disabled');
return true;
}
return false;
}
你能用html制作一个JSFIDLE吗?你输入的“正确值”是多少?很可能它无法获取元素大小
。。发布HTMLW您在输入字段中使用的文本应该有效,但无效?在我看来,接受的值是介于“”和“~”之间的字符序列,也不允许使用空字符串。你能发布HTML代码吗???@user2032220所以它是空字符串,我不知道idsize
的元素是如何获得值的(因为用户看不到它),但显然它没有获得值。也许你不应该有那个领域?还是显示需要修复的代码?或者它必须用javascript自动填充?无论如何,这取决于你的考虑。