Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制提示框中的输入_Javascript_Jquery_Html - Fatal编程技术网

Javascript 限制提示框中的输入

Javascript 限制提示框中的输入,javascript,jquery,html,Javascript,Jquery,Html,我希望我的提示框最多输入10个字符。如果用户在此之后按任意键,则不应输入任何文本 目前,我使用的代码使用while条件检查输入是否在限制内。如果输入超出限制,则会接受文本,但会不断提示用户,直到输入在限制内。该值将分配给person1变量,并且仅当输入在限制内时,代码才会继续前进 我希望输入框本身不接受超过指定的输入 请帮忙 代码如下: person1=prompt("Please enter your data 1(Maximum limit 20)","Sample 1");

我希望我的提示框最多输入10个字符。如果用户在此之后按任意键,则不应输入任何文本

目前,我使用的代码使用while条件检查输入是否在限制内。如果输入超出限制,则会接受文本,但会不断提示用户,直到输入在限制内。该值将分配给person1变量,并且仅当输入在限制内时,代码才会继续前进

我希望输入框本身不接受超过指定的输入

请帮忙

代码如下:

      person1=prompt("Please enter your data 1(Maximum limit 20)","Sample 1");
      while(person1.length > 20){
         alert("Keep the message length to 20 chars or less")
         person1 = prompt("Please enter your data 1(Maximum limit 20)","Sample 1");
        }
你不能


避免
prompt()
,以及与其相关的
alert()
confirm()
。正如你所发现的,他们所能做的都非常有限;它们还常常阻止用户在浏览器中执行其他任务,例如切换到其他选项卡。为了获得类似的效果,可以改用页内模式。请参阅,以获取这样一个示例。

我所能想到的就是使用do…while,当用户的文本超过指定数量时,重新显示提示。希望有帮助

var n = 0, msg = "Please enter your data 1(Maximum limit 20)";
do {
    n++;
    if(n > 1) msg = "You had too many characters! \nPlease enter your data 1(Maximum limit 20).";
    person1=prompt(msg, "Sample1");

}
while (person1.length > 20)

不幸的消息恐怕是,
prompt()

但是,您可以使用

您不必使用jQuery,但不妨看一看,了解一下这个想法。 基本上,通过这种方式,您将有一个正常的HTML方法来实现这一点(因此您可以使用maxlength或javascript来限制输入)


如果使用模式对话框,则会获得非常类似的效果。

使用提示框无法完全解决此问题。要解决此问题,必须创建一个jQuery UI自定义对话框

基本上,在表单标记中创建一个文本框和两个按钮“OK”和“Cancel”,并在Jquery中嵌入电子代码,使它们像提示框一样弹出

我用这个页面上的默认功能作为我的基础…

最后对代码进行了解释

以下是执行此操作的完整代码

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Dialog - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script>
$(document).ready(function ()
{   
    $('#dialog').dialog({
        autoOpen: false,
        width: 250,
        height: 180,
        modal : true,
        resizable: false,
    show:"slow"
    });

$('#put').click(function() {
       $( "#dialog" ).dialog( "open" );
   });
 });

 function getPdata( arg ) {             //Function called when Cancel button is pressed
 var f = document.getElementById( 'pForm' );
  // exit immediately
 close();
 return;
 }

function close(){
$( "#dialog" ).dialog( 'close' );
 }

 var cnt=1;
  function getPdata1() {       //function called when ok button is pressed
  var f = document.getElementById( 'pForm' );
  var n = $("input[name='name']").val();

  alert(n.length);
  if (n.length <= 10) {
       $('<div />',{id:"div" + cnt }).html(n).appendTo('body');  //crated div will have an id as `div`+ count;
  } else {
        alert('the data you have enterd is not in limit.Please try again');
         return;

  }
    close();
    if (cnt < 5) {
         f.name.value = "";
          $("#dialog").dialog('open');
          cnt++;
    }

}

function show()
   {
    document.getElementById("but1").style.visibility="visible";    

    }


     </script>
     </head>
     <body>

     <div>
    <button type="button" id="put" >Insert data</button>
    </div>

    <div id="dialog" title="Input Data"> <!--the actual contebts of dialog box-->
    <form id="pForm" >
     name: <input type="text" name="name" width='50' height='100' maxlength="10"   placeholder="Fill in your data" /><br><br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="button" value="OK" onclick="getPdata1()" />
    <input type="button" value="cancel" onclick="getPdata( this.value )" />
   </form>
   </div> 
   </body>
    </html>

jQuery UI对话框-默认功能
$(文档).ready(函数()
{   
$('#dialog')。dialog({
自动打开:错误,
宽度:250,
身高:180,
莫代尔:是的,
可调整大小:false,
节目:“慢”
});
$('#put')。单击(函数(){
$(“对话框”)。对话框(“打开”);
});
});
函数getPdata(arg){//按下取消按钮时调用的函数
var f=document.getElementById('pForm');
//立即退出
close();
返回;
}
函数关闭(){
$(“#dialog”).dialog('close');
}
var-cnt=1;
函数getPdata1(){//按下ok按钮时调用的函数
var f=document.getElementById('pForm');
var n=$(“输入[name='name']”)val();
警报(n.长度);

如果(n.length)这是针对文本框的。它对提示框有效吗?哦,提示…嗯。我会四处看看。哈,这是一个棘手的问题。快速回答是-不可能的。我想说,只有当你能检测到提示是否有焦点时,才能这样做,然后你可以取消用户按键事件传播(但检测按下了哪些键仍然是一件痛苦的事情)。如果无法检测提示的焦点,我不知道,我会好奇是否有人有解决方案。@i--:当模式对话框启动时,键盘事件根本不会传递到页面。