jquery空字符串字段异常处理

时间:2013-08-06 10:23:53

标签: jquery

一开始我使用警报但觉得它不是那么好..它给用户增加了额外的步骤而且很烦人..

如果field为空,我想这样做,然后恢复之前的值。

<ul id="task-group">
                <li class="active"><a href="#">Personal</a></li>
                                    <li class="active"><a href="#">Work</a></li>

            </ul>   


                <input type="text" name="task-group" style="display:none">

jquery的:

$(document).ready(function () {

var addInput = $('input[name="task-group"]').hide();
var beforeItems = $('li.active');

beforeItems.on('dblclick', itemClick);

function inputKeydown(e) {
    var $this = $(e.target).closest('input[type="text"]');

    if (e.keyCode == 13) {
        $this.blur();
    }
}

function itemClick(e) {
    var $this = $(e.target).closest('li.active');
    var txt = $this.find('a').text();

    var input = $("<input type='text'/>").val(txt);
    $this.html('');

    input.appendTo($this).focus();
    input.on('blur', editInputBlur);
    input.keydown(inputKeydown);
}


function editInputBlur(e) {
    var $this = $(e.target).closest('input[type="text"]');
    var v = $this.val();

    if (v.trim() == "") {

    } else {
        var $a = $("<a href='#'>" + v + "</a>");
        $this.parent().append($a);
        $this.remove();
    }
}


});

但我总是用val()方法得到空的html字段,帮助..(第34行)

http://jsfiddle.net/VE7Tq/1/

2 个答案:

答案 0 :(得分:1)

根据我的理解,您正在尝试检查文本框。如果为空,请替换为其前一个值。

一个简单的逻辑:

1)将txt变量的范围更改为全局

txt = $this.find('a').text();  // remove var keyword

2)然后你可以在任何地方访问它。在文本框blur事件中,检查是否为空值(您已经这样做)

发表这样的声明

if (v.trim() == "") {
        $this.val(txt);   // Replace with the previous value
    } else {
        var $a = $("<a href='#'>" + v + "</a>");
        $this.parent().append($a);
        $this.remove();
    }

选中此JSFiddle

希望你理解这个逻辑。

更新:优化答案很少,最好还是选择

var v = $this.val();
    if (v.trim() == "") {
        v= txt;
    } 
var $a = $("<a href='#'>" + v + "</a>");
$this.parent().append($a);
$this.remove();

Updated JSFiddle

我认为你可以理解这些小提琴之间的区别。

答案 1 :(得分:0)

试试这个

语法错误

if (v.trim() == "") {//wrong

替换为

if ($.trim(v) == "") {//right syntax