2011-03-23 84 views
1

前CHAOSJQUERY:查找表單元素

我曾經有過這樣的產品......

在頭部

<script type="text/javascript">$(function() { $("form.openid:eq(0)").openid(); });</script> 
在jquery.openid.js

var direct = function() { 
    var $li = $(this); 

    $this.unbind('submit').submit(function() { 
     $id.val($this.find("li.highlight span").text()); 
    }); 
    $this.submit(); 
    return false; 
    }; 

並在身體部分

<form class="openid" method="post" action="/Login.xhtml?ReturnUrl="> 
    <div> 
    <ul class="providers"> 
    <li class="direct" title="Google"> <img src="images/googleW.png" alt="icon" /> 
    </ul> 
    </div> 
</form> 

它像一個魅力工作。

騷亂髮生後,現在

,因爲我想在ASP.NET頁面我做出了相應的在母版

<script type="text/javascript">$(function() { $("#test.openidd").openid(); });</script> 
頭部改變

添加上述的所有內容

在身體的一部分,我加了id=test的div和等於openidd的等級。

<div id ="test" class="openidd"> 
    <ul class="providers"> 
    <li class="direct" title="Google"> <img src="images/google.png" />  
    </ul> 
</div> 

所以我應該做出什麼樣的變化對jquery.openid.js,使其工作?

我的意思是在第一種情況下$thisform.openid:eq(0)$this#text.openidd第二種情況和形式從未提交。

我想像這樣一個$this.FindParentForm存在於JQUERY,但我不知道!

請保持您的回答儘可能簡單,因爲我是新手

預先感謝您。

UPDATE 從我迄今爲止看到的答案來看,我想或者我沒有清楚地設置我的問題,或者我是soooo新手。我添加了div標籤作爲元素的外殼。該表格包含其他<li>的等jquery混亂。我不喜歡那樣!這就是爲什麼在我的崗位我相信,這項工作已在jquery.openid.js文件做...像

$this.GETParentFORM.unbind('submit').submit(function() { 
    $id.val($this.GETParentFORM.find("li.highlight span").text()); 
    }); 
$this.GETParentFORM.submit(); 
+1

我不明白什麼功能,你叫這裏$( 「form.openid:EQ(0)」) .openid(),以及你在哪裏調用函數var'direct = function(){...' – Aristos 2011-03-30 07:11:49

+0

你爲什麼拼命t ry使用__this__?而不是使用__eq()__或者這樣的事情,當你調用openid()時,你可能會嘗試傳遞一個變量,也許像__。openid()__這樣的相關表單的唯一ID,並且在openid函數中使用該id而不是__ $ this__ – FallenAngel 2011-03-31 15:22:31

+0

這會讓你的父母的形式:http://carnotaurus.tumblr.com/post/3121098288/communication-between-frames-in-jquery – CarneyCode 2011-04-03 11:43:34

回答

0

你也許可以將其更改爲:

<script type="text/javascript">$(function() { $("#test.openidd").parents('form').openid(); });</script> 

雖然我認爲這將是不如給您形式的ID,如:

<form id="submitForm5" ...> 

,然後更改JavaScript代碼:

<script type="text/javascript">$(function() { $("#submitForm5").openid(); });</script> 
+0

我不認爲這會工作,因爲你給的ID當你的表單到達瀏覽器時不會有相同的ID(由於ASP.NET的細微差別)。您可能想嘗試使用$('[id $ =「submitForm5」]')。 – 2011-03-23 19:18:20

+0

您能否檢查更新? – OrElse 2011-03-23 19:32:15

1

有一點要注意在ASP中。使用jQuery的NET是,任何具有runat="server"的控件都將具有基於原始ID的自動生成的ID。只是說,特別是如果你打算通過你的jQuery選擇ID。儘管如此,據推測,任何ASP.NET頁面(位於MasterPage上的頁面)中只有一種形式。因此,要選擇,你實際上需要做的就是去

$('form') 

,但如果你想要去的路線,我會使用

$('#test.openidd').closest('form') 
+0

Neil Ilagan您能否檢查更新? – OrElse 2011-03-23 19:32:42

+0

就像我說過的,ASP.NET頁面應該只有一種形式...所以不是'$('form')。openid();'爲你工作? – 2011-04-03 22:31:04

0

也許嘗試呢?

$("#test.openidd").parent().openid(); 
+0

沒有......這沒有幫助 – OrElse 2011-03-28 12:15:37

0
$('form').find('li.highlight span').text(); 

IE

$('form').unbind('submit').submit(function() { 
    $id.val($('form').find("li.highlight span").text()); 
    }); 
$('form').submit(); 
0

由於ASP.NET修改形式的ID,你仍然可以得到使用最接近形式元素。在此代碼中,您將獲得test.openidd的最接近元素,其形式爲

​​