2011-04-21 38 views
3

如何禁用提交按钮,直到文本区域的字符超过100个字符?禁用提交按钮,直到文本区域ihas超过100个字符

这是用于检查用户是否选择上传图像的代码。请告诉我如何命名我的textarea并指导我完成安装。

$(function() { 
    $('form').submit(function() { 
     if(!$("form input[type=file]").val()) { 
     alert('You must select a file!'); 
     return false; 
     } 
    }); 
}); 
+0

你说的是一个文本区域或文件输入?每个人都在回答文字区域问题。 – RobG 2011-04-21 04:12:36

回答

-1

您可以更新每一个文本区域内的数据改变时提交按钮,但是这是有问题的,因为每个浏览器具有文字区域不同的事件(在JavaScript)

A的状态常见的做法是设置一个时间间隔来检查提交框,然后根据该时间确定按钮的布尔值。例如

window.setInterval(function(){ $('#submitBtn').disabled = $("#textArea").val().length < 100 }, 100); 

(代码未测试)

+0

如何设置间隔? – EnexoOnoma 2011-04-21 03:44:16

+2

根本不需要* setInteral()*,只需在textarea(或某个父元素)上使用keyup即可。 – RobG 2011-04-21 03:45:31

+0

keyup不会总是成功,如果他们右键单击并粘贴信息会怎么样。 – AlanFoster 2011-04-21 03:46:30

-1

用户更喜欢它,如果字符在文本区域数量上提交验证。如果小于100,则取消提交并向用户提供错误消息,说明原因。据推测,页面上有提示,因此用户应该知道100个字符的标准以及他们输入了多少个字符。

如果你真的想要禁用按钮,那么在页面加载时使用脚本禁用它。使用按键监听器来计算textarea中的字符,并在超过100个时启用提交按钮。您可能还需要列出其他事件,所以如果用户通过拖动或粘贴来更改文本,则提交按钮被禁用财产更新得当。

+0

不处理所有需要的事件,-1 – AlanFoster 2011-04-21 03:47:34

+0

@ user551841 - 是的,这就是为什么验证提交是一个更好的选择和推荐的方法。 – RobG 2011-04-21 04:14:20

-1

大厦MiniTech移动的相当简洁的回答:

$(function() { 
    $('form').submit(function() { 
     if(!$("form input[type=file]").val()) { 
      alert('You must select a file!'); 
      return false; 
     } 

     if($("#theTextArea").val().length <= 100) { 
      alert("You must enter more than 100 characters!"); 
      return false; 
     } 
    }); 
}); 

只是要测试

+0

在我的情况下,在代码中正确添加了textarea和提交按钮? – EnexoOnoma 2011-04-21 04:03:41

+0

没有真正知道你的HTML代码是什么,这很难说 - 但这个功能对表单提交事件作出反应...所以它不会让人提交(虽然,按钮不明显禁用) – HorusKol 2011-04-21 04:06:21

+0

您的文字说: “textaera”,但你的代码说'表单输入[类型=文件]' – RobG 2011-04-21 04:13:22

5

首先,使提交按钮被禁用,例如特定的textarea的ID替换theTextArea

<input type="submit" disabled="disabled" id="submitid" /> 

接下来,您应该编写一个函数,将计算在用户写入textarea的长度,这可以通过使用jQuery中或在的onkeyup普通的JavaScript的KEYUP函数来完成。 例jQuery中:

$("#textareaid").keyup(function() { 
    if((this).val().length > 100) { 
    $("#submitid").removeAttr('disabled'); 
    } else { 
    $("#submitid").attr("disabled", "disabled"); 
    } 
}); 

注:代码未经测试。

的setInterval方法:

setInterval(function() { 
    if($("#textareaId").val().length > 100) { 
    $("#submitid").removeAttr("disabled"); 
    } else { 
    $("#submitid").attr("disabled", "disabled"); 
    } 
}, 500); //Runs every 0.5s 

全尺寸例如:

<form> 
    <textarea id="textareaId"></textarea> 
    <input type="submit" id="submitId" disabled="disabled" /> 
</form> 
<script type="text/javascript"> 
    setInterval(function() { 
    if($("#textareaId").val().length > 100) { 
     $("#submitId").removeAttr("disabled"); 
    } else { 
     $("#submitId").attr("disabled", "disabled"); 
    } 
    }, 500); //Runs every 0.5s 
</script> 
+0

你知道这不会将按钮设置为true,对吗? – AlanFoster 2011-04-21 03:52:01

+0

现在它会忘记将id属性添加到输入标签。 – 2011-04-21 03:53:51

+0

如果用户只是粘贴一些信息会怎样?我担心这个表单将用于粘贴内容... – EnexoOnoma 2011-04-21 04:02:38

相关问题