2011-03-23 96 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的最接近元素,其形式为

​​