【问题标题】:Javascript Double Click EventJavascript 双击事件
【发布时间】:2013-07-02 12:12:01
【问题描述】:

有谁知道我可以调用什么 javascript 函数来激活此 id 上的“dblClickField”事件而无需实际单击该框?这是一个复选框,我想通过控制台使用 javascript 强制勾选它。

<td 
    class="dataCol inlineEditWrite" 
    id="00N200000030rph_ilecell" 
    onblur="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.mouseOutField(event, this);" 
    onclick="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.clickField(event, this);" 
    ondblclick="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.dblClickField(event, this);" 
    onfocus="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.mouseOverField(event, this);" 
    onkeypress="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun &amp;&amp; event &amp;&amp; event.keyCode==KEY_ENTER) sfdcPage.dblClickField(event, this);" 
    onmouseout="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.mouseOutField(event, this);" 
    onmouseover="if (window.sfdcPage &amp;&amp; window.sfdcPage.hasRun) sfdcPage.mouseOverField(event, this);" 
    tabindex="0">
    <div id="00N200000030rph_ileinner">
        <img src="/img/checkbox_unchecked.gif" alt="Not Checked" width="21" height="16" class="checkImg" id="00N200000030rph_chkbox" title="Not Checked">
    </div>
</td>

【问题讨论】:

  • 你能更好地格式化吗?单行阅读真的很难。
  • 我不知道你为什么有这么多这样的“内联”代码。

标签: javascript


【解决方案1】:

不要在 HTML 中放入太多内联代码。这不是很容易阅读。将您的代码放入一个函数中,然后您可以随时调用它(无需欺骗双击事件):

<script>
function dblclickfunction(event)
{
    if (window.sfdcPage && window.sfdcPage.hasRun) 
        sfdcPage.dblClickField(event, this);
}
</script>

<td 
    class="dataCol inlineEditWrite" 
    id="00N200000030rph_ilecell" 
    onblur="if (window.sfdcPage && window.sfdcPage.hasRun) sfdcPage.mouseOutField(event, this);" 
    onclick="if (window.sfdcPage && window.sfdcPage.hasRun) sfdcPage.clickField(event, this);" 
    ondblclick="dblclickfunction(event);" 
    onfocus="if (window.sfdcPage && window.sfdcPage.hasRun) sfdcPage.mouseOverField(event, this);" 
    onkeypress="if (window.sfdcPage && window.sfdcPage.hasRun && event && event.keyCode==KEY_ENTER) sfdcPage.dblClickField(event, this);" 
    onmouseout="if (window.sfdcPage && window.sfdcPage.hasRun) sfdcPage.mouseOutField(event, this);" 
    onmouseover="if (window.sfdcPage && window.sfdcPage.hasRun) sfdcPage.mouseOverField(event, this);" 
    tabindex="0">
    <div id="00N200000030rph_ileinner">
        <img src="/img/checkbox_unchecked.gif" alt="Not Checked" width="21" height="16" class="checkImg" id="00N200000030rph_chkbox" title="Not Checked">
    </div>
</td>

【讨论】:

    【解决方案2】:

    您可以通过调用apply 来完成此操作,如这里的答案:

    How can I programmatically invoke an onclick() event from a anchor tag while keeping the ‘this’ reference in the onclick function?

    但是,您可能需要考虑一种稍微不同的方法。只需将您的双击处理程序放在一个函数中:

    function onDoubleClick() {
        if (window.sfdcPage && window.sfdcPage.hasRun)
            sfdcPage.dblClickField(event, this);
    }
    

    然后你可以从你的 &lt;td&gt; 元素中引用它:

    <td ondblclick="onDoubleClick();"...
    

    您还需要从其他任何地方调用它。

    这里有一个 jsfiddle 来演示:http://jsfiddle.net/nq5aP/

    【讨论】:

    • 嗯...好吧,我不确定如何使用 Chrome 的控制台在这里完成任何事情。我的意思是,你可以在控制台中输入一个函数,但你不能真正声明 HTML(无论如何,很容易),所以你不能连接你的双击标题....让我扔一个 jsfiddle你;希望这会说清楚。
    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多