2010-10-27 2 views
1

Я пытаюсь проверить текстовое поле, чтобы убедиться, что оно содержит текстовые фразы.jQuery validation regex: textarea содержит фразу

Это то, что я до сих пор, но это не работает:

$.validator.addMethod(
    "regex", 
    function(value, element, regexp) { 
     var check = false; 
     var re = new RegExp(regexp); 
     return this.optional(element) || re.test(value); 
    }, 
    "Please include your keyword(s)." 
); 

$("#article_text").rules("add", { regex: "/test phrase/i" }); 

Любые идеи? В идеале я бы хотел, чтобы он проверял несколько фраз и отображал ошибку, если какой-либо из них не включен в текстовое поле.

+0

Можете ли вы определить, что «не работает»? Это тизер? – Kobi

+0

Ну, кажется, это всегда флаг, даже если я помещаю «тестовую фразу» в текстовое поле. – Ricky

+0

Если у кого-то есть другой способ сделать это, я также открыт для него. Он не должен использовать регулярное выражение или валидатор. – Ricky

ответ

2

При использовании RegExp() вы должны уйти от в / и флаги, это должно быть просто:

$("#article_text").rules("add", { regex: "test phrase" }); 

You can test it here. Но так как вы хотите флаги, лучший способ это просто использовать его непосредственно, не создавая из строки, например:

$.validator.addMethod("regex", function(value, element, regexp) { 
    return this.optional(element) || regexp.test(value); 
}, "Please include your keyword(s)."); 

Тогда вы назвали бы это так:

$("#article_text").rules("add", { regex: /test phrase/i }); 

You can test that version out here.

+0

Прекрасно работает, спасибо Нику. Какой был бы лучший способ потребовать две разные фразы? Пример: необходимо будет включить «тестовую фразу» и «другую фразу». – Ricky

+1

@Ricky - если вы делаете регулярное выражение, просто '' 'разделяете их на" или "combo –

+0

Что я должен использовать, чтобы требовать наличия обеих фраз? – Ricky