Event.stop在.each(原型)中

时间:2013-05-31 10:47:58

标签: event-handling prototypejs

我正在努力应该在提交之前检查表单字段的函数。 我有一些选择(下拉字段)和一个文本字段。提交时,它们都不应为空。

要重现的脚本http://jsfiddle.net/6KY5J/2/

我检查.each和其他文本字段中的下拉字段。这是功能:

function checkFields(e) {
    $$('.dropdown').each(function (element) {
        if (element.selectedIndex === 0) {
            alert('Fill all dropdown fields!');
            Event.stop(e);
            throw $break;
            return;
        }
    });

    if ($('sometext').value == '') {
        alert('Fill the input!');
        Event.stop(e);
        return;
    }
    alert('OK!');
}

但如果其中一个下拉列表为空,我无法阻止进一步执行脚本。 Event.stop(e)似乎仅在第二部分中用于输入字段。

期望的行为:

  1. 检查下拉列表,如果一个是空的,停止执行,不要做任何 进一步检查
  2. 仅在下拉列表不为空时检查文本输入字段
  3. 仅在提交时提交
  4. 问题出在第1步。我的脚本不会停在这里,警报,但不会停止。任何的想法?谢谢!

1 个答案:

答案 0 :(得分:0)

function checkFields(e) {
    var dropdownsokay = true;
    $$('.dropdown').each(function (element) {
        if (dropdownsokay && element.selectedIndex === 0) {
            alert('Fill all dropdown fields!');
            Event.stop(e);   
            dropdownsokay = false;         
        }
    });

    if(dropdownsokay) { //only check textfield if all the dropdowns are okay
        if ($('sometext').value == '') {
            alert('Fill the input!');
            Event.stop(e);
            return;
        }
        alert('OK!');
    }

}