0

管理者ユーザーが既存の名前エントリを選択して編集可能にするように設計されたインターフェイスがあります。

レンダリングされたコードは次のように始まります

前

<td class="selectname" colspan="2" style="width: 220px; display: table-cell;">
<select name="PersonSelect" id="PersonSelect" style="font-size:10px">
<option></option>
<option value="123">Aamodt, Jodi</option>
...

そして、選択が行われた後、選択値がクリアされ、TDが非表示になります

<td class="selectname" colspan="2" style="width: 220px; display: none;">

そして、2つの新しい入力が表示されます。

<td class="entername" style="display: table-cell;"><input type="text" size="12" name="First" id="First" value="" class="required valid"></td>
<td class="entername" style="display: table-cell;"><input type="text" size="12" name="Last" id="Last" value="" class="required valid"></td>

後

発生している問題は、管理者の1人が、選択メニューで人を選択しても何も変わらないと言っていることです。たとえば、テキスト入力は表示されず、選択入力は消えません。

ユーザーと私はどちらもChromeのページにアクセスしています。ユーザーは特に技術的ではありませんが、与えられたスクリーンショットは症状について明確でした。JavaScriptは、同じページの読み込み中にユーザーのJavaScript検証ルーチンが成功しているため、Chromeでオフにされていません。ユーザーと私は同じデータセットを読み込んでいるので、これはデータ自体に関連する破損の問題ではないはずです。

ajax変更機能は以下のとおりです。

何かアドバイス?

$("#PersonSelect").change(function() {
$.ajax({
  url: 'person_form_populater.php?person=' + $("#PersonSelect").val() + '&entity=' + $("#Entity").val(),
   dataType: 'json',
     success: function(data) {
    if (data['found']) {
      alert('There is already a record linking that person to this entity');
      $('#First_' + data['found']).focus();
      var origColor = $('#bmformtable_' + data['found']).css("background-color");
      $('#bmformtable_' + data['found']).css("border", '0px solid #f00');
      $('#bmformtable_' + data['found']).animate({
        borderWidth: 5
      }, 2000, "linear", function() {
        $('#bmformtable_' + data['found']).animate({
        borderWidth: 0
      }, 2000, "linear", function() {

      });
      });
    } else {
      $('#togglelink').click();
      $('#First').val(data['First']);
      $('#Last').val(data['Last']);
      $('#Occupation').val(data['Occupation']);
      if (data['Gender'] == 'Male') {
        $("#Gender").attr('checked',true);
      } else if (data['Gender'] == 'Female') {
        $("#Gender2").attr('checked',true);
      } else {
        $("#Gender").attr('checked',false);
        $("#Gender2").attr('checked',false);
      }
      $('#Race').val(data['Race']);
      $('#Income').val(data['Income']);
      $('#Person').val(data['ID']);
    }
   }
});                
});

//編集この機能を使用すると、ユーザーはロードされたレコードを「選択解除」して、選択メニューに再度アクセスできます。

$("#togglelink,#togglelink2").click(function(){
    $('#PersonSelect option').attr('selected', false);
    $('#First').val('');
    $('#Last').val('');
    $('#Occupation').val('');
    $("#Gender").attr('checked',false);
    $("#Gender2").attr('checked',false);
    $('#Race').val('');
    $('#Income').val('');
    $('#Person').val('');
    $(".entername, .selectname, #togglelink, #togglelink2").toggle();                                
});
4

2 に答える 2

1

ユーザーのブラウザにエラーはないと言いました。エラーがあると思いますが、表示されません。

次のようにして、ajax 呼び出しでエラーをログに記録します。

$.ajax({
  ...
}).error(function (data, textStatus, xhr) {
     console.log("error when using ajax" + data);
});
于 2013-02-18T16:58:40.407 に答える
1

新しい機能が既存のファイルに実装されている場合、キャッシュの問題である可能性があります。

ユーザーにキャッシュをクリアするよう求めることができない場合は、javascript に「バージョン」を追加してみてください。

<script src="/js/yourjavascript.js?20130218" type="text/javascript">

? の後の値 JavaScriptには影響しませんが、リソースの名前を変更し、ブラウザにこのファイルがキャッシュにないことを伝え、リクエストする必要があります.

コンソールでサーバーの応答をチェックして、どちらの場合もサーバーが正しく応答していることを確認することもできます。

于 2013-02-18T17:01:51.557 に答える