javascript - 选择某些下拉选项时不允许使用字母字符

标签 javascript jquery

我有一个下拉列表 (transfertype) 和一个文本框 (purchaseprice)。选择下拉列表(传输类型)时,这决定了允许文本框(购买价格)执行的操作。

我试图弄清楚何时选择销售以不允许字母字符,但如果选择其他任何内容则再次允许它们,因为它会根据下拉选项进行预填充。

$(document).on('change', '#transfertype', function() {

    var purchaseprice = $('#purchaseprice');

    if($(this).val()==='' || $(this).val()==='Sale') {
        purchaseprice.val('').prop('readOnly', false);
    } else {
        purchaseprice.val($(this).val()).prop('readOnly', true);
        purchaseprice.valid();
    }
    calculateTotal();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<label for="transfertype">Transfer type:</label>
<select name="transfertype" id="transfertype" required>
  <option value="">Select Type</option>
  <option value="Sale">Sale</option>
  <option value="Gift">Gift</option>
  <option value="Trade">Trade</option>
  <option value="Repossession">Repossession</option>
  <option value="Court Order">Court Order</option>
  <option value="Inheritance">Inheritance</option>
  <option value="Add Name">Add Name</option>
  <option value="Remove Name">Remove Name</option>

<label for="purchaseprice" class="labelspace">Purchase price:</label>
	<input type="text" name="purchaseprice" id="purchaseprice" required="yes"/>

如有任何帮助,我们将不胜感激。

最佳答案

试试这个。只需测试选择 Sale 时按下的按钮。

一如既往,建议您也在后端验证这一点。

$(document).on('change', '#transfertype', function () {

var purchaseprice = $('#purchaseprice');

if ($(this).val() === '' || $(this).val() === 'Sale') {
    purchaseprice.val('').prop('readOnly', false);


    $("#purchaseprice").keydown(function (e) {
        // Allow: backspace, delete, tab, escape, enter and .
        if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
        // Allow: Ctrl+A, Command+A
        (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
        // Allow: home, end, left, right, down, up
        (e.keyCode >= 35 && e.keyCode <= 40)) {
            // let it happen, don't do anything
            return;
        }
        // Ensure that it is a number and stop the keypress
        if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
            e.preventDefault();
        }
    });


} else {
    purchaseprice.val($(this).val()).prop('readOnly', true);
    purchaseprice.valid();
}
calculateTotal();

});

jsfiddle

Original function

关于javascript - 选择某些下拉选项时不允许使用字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698566/

相关文章:

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - jsPlumb 连接器显示错误路径

javascript - 如何阻止浏览器在选项卡之间共享 session ?

javascript - 多维数组 - 创建表

javascript - Nodejs MySQL连接查询返回值给函数调用

javascript - 从数组中在 Canvas 上绘制正方形

jquery - 无法使用 jQuery 将 html 文件加载到另一个 html 文件

javascript - HTML5 Canvas - 图像文件不会显示在 Canvas 上

javascript - 选择时突出显示元素

Jquery切换多个按钮