2012-05-29 54 views
0

這個工作完美,因爲我希望它在Firefox中,但它不適用於Chrome。任何人都可以指出我正確的方向嗎?g:JavaScript在Firefox中工作,但不在Chrome中

<g:javascript> 
    function selectedStatus() 
    { 
     var index = j("#statusId"); 
     if(${statusValue} = ${Status.getAllEnums()}) 
     { 
     index.selectedIndex = ${statusValue}; 
     } 
    } 
</g:javascript> 

我將一個用戶狀態值從控制器傳遞給gsp頁面。我檢查該值是否等於grails select中的某個值,如果是,則將該「當前」值設置爲出現在選擇框中的值。

這裏是我的GSP ...

<g:formRemote name="custom_status" url="[controller: 'traffic', action: 'status']"> 
    <h4> 
    <g:select id="statusId" name="MyStatus" from="${Status.getAllEnums()}" value="${statusValue}" noSelection="['':'Please Select...']" onload="selectedStatus()" onchange="document.getElementById('sub_status').value = ''"/> 
    </h4> 
    <g:textField name="sub_status" value="${subStatusValue}" /> 
    <g:submitButton name="submit_status" value="Apply Status" /> 
    </g:formRemote> 

根據需要在Firefox,但在Chrome中不發生改變的選擇框的變化。

這裏是生成的HTML ...

<form onsubmit="jQuery.ajax({type:'POST',data:jQuery(this).serialize(), url:'/portal/traffic/status',success:function(data,textStatus){},error:function(XMLHttpRequest,textStatus,errorThrown){}});return false" method="post" action="/portal/traffic/status" id="custom_status"> 
    <h4> 
    <select name="status" id="statusId" onload="selectedStatus()" onchange="document.getElementById(&#39;sub_status&#39;).value = &#39;&#39;" > 

<option value="">Please Select...</option> 

<option value="available" >available</option> 

<option value="away" >away</option> 

<option value="dnd" >dnd</option> 

<option value="unavailable" >unavailable</option> 

</select> 
    </h4> 
    <input type="text" name="sub_status" value="In a meeting" id="sub_status" /> 
    <input type="submit" name="submit_status" value="Apply Status" id="submit_status" /> 
    </form> 
    <br/> 

感謝

+1

「一些服務器端代碼沒有按'在特定的瀏覽器中工作'不是一個很好的問題。將其分解爲「某些服務器端代碼不會生成我期望的客戶端代碼」或「某些客戶端代碼在特定瀏覽器中不起作用」。 – Quentin

+0

你對這段代碼有什麼結果HTML? –

+0

@IgorArtamonov我得到一個包含狀態列表的選擇框。刷新後,在Firefox中,狀態將是我設置狀態的任何狀態,在Chrome中它保持默認值,無需選擇。 – chuckliddell0

回答

1

爲什麼value="${statusValue}"不在這裏工作了這真的很奇怪。順便說一句,你的JavaScript代碼可能無效(我不知道你有什麼結果JS,但它是非常有可能的),那麼嘗試以下操作:

<g:javascript> 
    j(document).ready(function() 
    { 
     j("#statusId").val('${statusValue}'); //I guess `j` is your prefix for jQuery, right? 
    }); 
</g:javascript> 

,並刪除onload="selectedStatus()"

+0

這在Firefox中效果很好,但像我的原始解決方案,它不適用於Chrome。當我使用chrome刷新頁面時,它返回到'noSelection'值。不過謝謝。我可以通過'g:textField'將'value =「$ {statusValue}」'傳遞給gsp頁面,沒有任何問題,它似乎只適用於'g; select' – chuckliddell0

+0

Chrome控制檯中的任何js錯誤? 'Command + Option + I',在打開頁面之前 –

+0

不是控制檯是空的,沒有錯誤。這是一個奇怪的哈哈 – chuckliddell0

相關問題