Jquery 按enter键时提交基于标记的表单

Jquery 按enter键时提交基于标记的表单,jquery,Jquery,我有一个基于标签的搜索表单(就像你在Facebook或S/O上看到的基于标签的文本框一样,在这里你输入一个单词并按下键盘上相应的分隔符键) 在我的网站上,您在文本字段中键入一个单词,然后按enter键“确认”或“接受”该关键字,这样您就可以输入另一个关键字 问题是,即使您可能已经输入完搜索查询,按enter键也不会提交表单(显然),因为e.preventDefault()已启用,因此我可以使用enter按钮接受/确认每个标记 我想做的是,如果用户没有输入任何(或任何新)标记,则在他们按enter

我有一个基于标签的搜索表单(就像你在Facebook或S/O上看到的基于标签的文本框一样,在这里你输入一个单词并按下键盘上相应的分隔符键)

在我的网站上,您在文本字段中键入一个单词,然后按enter键“确认”或“接受”该关键字,这样您就可以输入另一个关键字

问题是,即使您可能已经输入完搜索查询,按enter键也不会提交表单(显然),因为e.preventDefault()已启用,因此我可以使用enter按钮接受/确认每个标记

我想做的是,如果用户没有输入任何(或任何新)标记,则在他们按enter键时提交表单,而不是(尽管有点)不方便我的用户

我将尝试用以下图片更清楚地解释:


这可能吗?

我的第一个建议是检查状态。例如,当他们正在选择标记时,您可以将类
.tagging
添加到元素中。当他们按Enter键时,您可以检查元素上是否有
.tagging
类。如果是,则完成标记选择并删除该类。如果类不在元素上,这意味着它们没有标记,因此您可以继续并提交更改

$("#tags").on("keypress", function(e){
    e.preventDefault();
    if ( e.which === 13 ) {
        if ( $(this).is(".tagging") ) {
            /* Add tag, remove class */
        } else {
            /* Submit data */
        }
    }
});
我想这就是你要找的

$("#tags").keyup( function(e){
    if ( e.which === 13 ) {
        if ( /*value is not empty*/ ) { //add tag             
        } else {
            $("#formID").submit();
        }
    }
});