2012-02-10 5 views
-1

Я пытаюсь создать кнопку, используя div. Эта кнопка div вызовет событие onlick для кнопки linkbutton. по какой-то причине он не работает в хроме. Его не запускает событие кнопки в Chrome? Но она отлично работает в других браузерах ..Javascript не работает в Chrome ?? но в FF и IE работает

Вот мой код .. за

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" 
    ValidateRequest="false" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="dvButton" runat="server" ></div> 
     <asp:LinkButton ID="DummyBtn" runat="server" Text="Dummy" OnClick="DummyBtn_Click"></asp:LinkButton> 
    <input type="hidden" id="hdnConfigId" runat="server" /> 
    <input type="hidden" id="hdnSelected" runat="server" /> 

    </form> 
</body> 
<script language="javascript" type="text/javascript"> 
    function Selected(value, selected) { 

     document.getElementById('<%=hdnConfigId.ClientID %>').value = value; 

     document.getElementById('<%=hdnSelected.ClientID %>').value = selected; 

     document.getElementById('<%=DummyBtn.ClientID %>').click(); //This does not work in Chrome 

    } 
    </script> 
</html> 

Кода:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Text; 
using System.IO; 

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      dvButton.InnerHtml = "<a href=\"javascript:void(0);\" id=1234 onclick=\"javascript:Selected('1234','Test');return false;\" >TEST</a>"; 
     } 

     protected void DummyBtn_Click(object sender, EventArgs e) 
     { 
      string id = hdnConfigId.Value; 
      string selected = hdnSelected.Value; 
      //Logic to retrieve data by passing these parameters into DB 

     }  
    } 
} 

СТАВШЕГО ИСТОЧНИК:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head><title> 



</title></head> 

<body> 

    <form name="form1" method="post" action="WebForm1.aspx" id="form1"> 

<div> 

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 

<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUHNjcxMjAzMQ9kFgICAQ9kFgICAQ8WAh4JaW5uZXJodG1sBWo8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0xMjM0IG9uY2xpY2s9ImphdmFzY3JpcHQ6U2VsZWN0ZWQoJzEyMzQnLCdUZXN0Jyk7cmV0dXJuIGZhbHNlOyIgPlRFU1Q8L2E+ZGSqT177YHIKIjfz5j0oOl9lGktifA==" /> 

</div> 



<script type="text/javascript"> 

//<![CDATA[ 

var theForm = document.forms['form1']; 

if (!theForm) { 

    theForm = document.form1; 

} 

function __doPostBack(eventTarget, eventArgument) { 

    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 

     theForm.__EVENTTARGET.value = eventTarget; 

     theForm.__EVENTARGUMENT.value = eventArgument; 

     theForm.submit(); 

    } 

} 

//]]> 

</script> 





<div> 



    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALUn5j+AQKEzpmBDwKf7rOjAgLVqJ/GB0fyISUyIuzPcZ4CYvSLltNpE/oA" /> 

</div> 

    <div id="dvButton"><a href="javascript:void(0);" id=1234 onclick="javascript:Selected('1234','Test');return false;" >TEST</a></div> 

     <a id="DummyBtn" href="javascript:__doPostBack('DummyBtn','')">Dummy</a> 





    <input name="hdnConfigId" type="hidden" id="hdnConfigId" value="1234" /> 

    <input name="hdnSelected" type="hidden" id="hdnSelected" value="Test" /> 

    </form> 

</body> 

<script language="javascript" type="text/javascript"> 

    function Selected(value, selected) { 



     document.getElementById('hdnConfigId').value = value; 



     document.getElementById('hdnSelected').value = selected; 





     document.getElementById('DummyBtn').click(); 



    } 

    </script> 

</html> 
+0

Я вижу пробел после каждого .ClientID, попробуйте удалить пространство и дайте нам знать, если это фиксированный или не ваш вопрос – ComputerSaysNo

+1

Можем ли мы увидеть предоставленный источник? –

+1

@Dorin Это не решит проблему. Пространство является серверным, поэтому не будет создавать пространство на стороне клиента. –

ответ

1

Вы можете проверить: How can I simulate a click to an anchor tag?

Проблема заключается в том, что метод DOMElement.click() не поддерживается всеми браузерами, и светлячок просто реализовали его в последнее время для Exemple.

Ссылку я предоставил обеспечивает альтернативу, или вы можете использовать JQuery;)

+0

oo Почему я не подумал об этом? – CompanyDroneFromSector7G

+0

ИСПРАВЛЕНО ИЗМЕНИЛО ЛИНИИ КНОПКИ. :-) Кнопка будет скрыта, так что не имеет значения. Спасибо за помощь и объяснение. – user929153

0

Если вы хотите используйте .click(), вы должны использовать jQuery и включить его, что вы не делали!
JQuery Startup Учебное пособие: http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery

+0

Он не использует jQuery. Это простой JS. –

+0

, но он отметил его jQuery –

+0

Да, но это не так, но кода нет. Поэтому включение библиотеки jQuery не будет устранять проблему. –

0

EDIT: К сожалению, писал, прежде чем я увидел источник.

Прежде всего, это не value и selected зарезервированные слова? Это может привести к проблемам в более старых версиях IE.

Вы вызываете событие click на якоре, у которого нет обработчика onclick.

+0

По-прежнему не исправлена ​​проблема в браузере Chrome? Продолжайте получать Uncaught TypeError: Object javascript: __ doPostBack ('DummyBtn', '') не имеет метода «щелкнуть» в консоли Chrome. – user929153

+0

Проблема заключается в том, что вы вызываете 'click()' в своей функции Selected() на якорь, который не имеет события onclick. –

+0

Я не думаю, что вы можете даже вызвать 'click()' на якорях. Только на поля формы. –

2

Вы не можете вызвать событие click тега якоря из javascript напрямую, по крайней мере в некоторых браузерах.

Существует пример того, как сделать это здесь: How can I simulate a click to an anchor tag?

Кроме того, вы можете использовать JQuery, как я уверен, что обрабатывает все неприятные вещи для вас.

+0

Прошу прощения. Вы правы, вы дали ответ сначала – user929153

Смежные вопросы