按返回按钮时为什么输入文字没有被删除?

时间:2014-07-09 05:21:13

标签: javascript jquery jquery-mobile

我制作了一个简单的演示,其中我限制弹出屏幕不要在后退按钮按下时关闭。但是我能够这样做但是当我在文本字段上写东西时我无法删除文本。 我们可以做两件事吗?意味着限制弹出屏幕以及从文本字段中删除文本?

<!DOCTYPE html>
<html>
<head>
<link href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>

</head>
<body>
  <div data-role="page">
  <div data-role="header">
    <h1>Welcome To My Homepage</h1>
  </div>

  <div data-role="main" class="ui-content">
    <a href="#myPopup" data-rel="popup" class="ui-btn ui-btn-inline ui-corner-all">Show Popup</a>

    <div data-role="popup" id="myPopup" data-dismissible='false'>

    <div data-role="fieldcontain">
        <label for="testCaseIDValue">TestCase Name:</label>
        <input type="text" name="testCaseIDValue" id="testCaseInnerIDValue" value="" class="inputTextTestCase"/>
    </div>
    <a href="#" data-role="button" id="doneInnerPopUp" class="common-button">Done</a>
  </div>

  <div data-role="footer">
    <h1>Footer Text</h1>
  </div>
</div> 

</body>
</html> 

js Code

$('body').keydown(function(e) {

    if($('#myPopup').is(':visible')) {
        if(e.keyCode == 8) { // 8 is backspace
            e.preventDefault();
        }
    }

});

2 个答案:

答案 0 :(得分:2)

您可以尝试创建input类型的隐藏reset 假设它有id clearIt

你可以说:

$('body').keydown(function(e) {

    if($('#myPopup').is(':visible')) {
        if(e.keyCode == 8) { // 8 is backspace
           $('#clearIt').trigger("click");       
 }
    }

});

它会在表单

时重置输入文字

答案 1 :(得分:1)

您刚刚为整个文档(在您的案例正文中)禁用了退格键,包括输入内容。
为了不影响输入,您可以检查它是否是条件

中的活动元素
$(document).on('keydown', function(e) {
    if( 
        $('#myPopup').is(':visible') && 
        (!$('#myPopup input').is(':focus')) &&
        e.which === 8
    ) {
        e.preventDefault();
    }

});

FIDDLE