0

基本的に、HTMLドキュメントに複数ある場合のログインフォームを見つけたいです。forms私の推測は次のとおりです。'forgot your password'または'Remember me'またはのようなフォーム文字列を識別できる場合'keep me signed in' 、そのような文字列/リンクはパスワードフィールドの後に表示されるため、ログインフォームである可能性があります。

これらの文字列/リンクを含むフォームを見つけて、アプリでそのフォームの名前または ID を使用する方法はありますか?

更新: 次のコードを使用して、「パスワードを忘れた」という文字列を含むフォーム ID を取得しましたが、何も返されません。

NSString *formID = [NSString stringWithFormat:@"%@",[self.browser stringByEvaluatingJavaScriptFromString:@"$('form').filter (function() {var text = this.innerHTML.toLowerCase();" 
                        "return text.indexOf('forgot your password') != -1 || "
                        "text.indexOf('remember me') != -1;}).attr('id');"] ];
4

2 に答える 2

3
var loginFormId = $('form').filter(function() {
    return this.innerHTML.indexOf('forgot your password') != -1;
}).attr('id');​

または単に:contains

var loginFormId = $('form:contains("forgot your password")').attr('id');​

:containsセレクタドキュメント:

説明: 指定されたテキストを含むすべての要素を選択します。一致するテキストは、選択した要素内、その要素の子孫、またはそれらの組み合わせ内に直接表示できます。属性値セレクターと同様に、:contains() の括弧内のテキストは、そのままの単語として記述することも、引用符で囲むこともできます。選択するには、テキストの大文字と小文字が一致している必要があります。

ライブデモ


アップデート:

テキストの大文字と小文字が不明な場合は、次を使用する必要がありますfilter

var theFormId = $('form').filter(function() {
    var text = this.innerHTML.toLowerCase(); 
    return text.indexOf('forgot your password') != -1 || 
           text.indexOf('remember me') != -1;
于 2012-04-09T06:10:14.333 に答える
1
var loginForm;
$("form").each(function(){
    if($(this).text().indexOf("Remember me")>=0)
         loginForm = $(this);
})
于 2012-04-09T06:11:26.157 に答える