javascript - 如何从字段模糊的文本输入中获取值

标签 javascript jquery jquery-ui

<分区>

我正在尝试编写一些 Javascript 以从两个文本输入中获取值,这应该相当简单。但有些不对劲。这是我的代码:

<script>
    jQuery(function() {
        jQuery('#fromPicker, #toPicker').datepicker({ dateFormat : 'yy-mm-dd' });

        jQuery('#submit').attr('disabled', 'disabled');

        jQuery('#toPicker').on('blur', function() {
            var fromDate = jQuery('#fromPicker').val();
            var toDate = jQuery('#toPicker').val();
            console.log(toDate);

            if (fromDate !== '' && toDate !== '') {
                if (isValidDate(fromDate) && isValidDate(toDate)) {
                    jQuery('#submit').removeAttr('disabled');
                } else {
                    alert('You must enter dates in the format "yyyy-mm-dd"');
                }
            } 
        });
    });

    function isValidDate(dt) {
        if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) {
            return true;
        }
    }
</script>

但是,当我 console.log(toDate) 时,我得到一个空字符串。但是,如果我再次执行另一个 blur 事件(聚焦和取消聚焦数据仍在其中的字段),我会得到正确的值。知道为什么它第一次不起作用吗?

这两个文本输入的 ID 分别为 #fromPicker#toPicker,并且是 jQueryUI 日期选择器。

解决方案:

最终做了我想要的是这样的:

jQuery(function() { jQuery('#fromPicker, #toPicker').datepicker({ dateFormat : 'yy-mm-dd' });

    jQuery('#submit').on('click', function() {
        var fromDate = jQuery('#fromPicker').val();
        var toDate = jQuery('#toPicker').val();

        if (fromDate !== '' && toDate !== '') {
            if (isValidDate(fromDate) && isValidDate(toDate)) {
                // do nothing
            } else {
                alert('You must enter dates in the format "yyyy-mm-dd"');
                return false;
            }
        } else {
            return false;
        }
    });
});

function isValidDate(dt) {
    if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) {
        return true;
    }
} </script>

最佳答案

我看不出有任何原因导致您的代码无法正常工作,但不是 blur 事件,而是尝试 d​​atepicker 的 onselect 事件

jQuery('#toPicker').datepicker( {
    onSelect: function(date) {
        alert(date);
        // Do other stuff
    },
    // ....
);

关于javascript - 如何从字段模糊的文本输入中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817853/

相关文章:

javascript - Require.js + AngularAMD - 错误 : [ng:areq] Argument 'loginController' is not a function, 未定义

javascript - 强制事件传播

javascript - 向除元素之外的主体添加覆盖层

javascript - 如何使用触摸板和鼠标滚轮事件区分捏合或放大/缩小

javascript - HTML , Jquery 鱼眼菜单

jquery - 计算所有选择列表

javascript - 使用 Switch (react-router) 时滚动到顶部

javascript - Ember Js : Setting a property of controller from within the view

javascript - 将 Preventdefault 与将数据对象传递给函数相结合

javascript - 如何通过名称属性获取输入元素的集合