3

내 대학 수업이 언제 제공되는지 확인할 수 있도록 앱을 만들고 있습니다.프로그래밍 방식으로 양식 데이터 제출

프로그래밍 방식으로 정보를 '클래스 검색'양식에 입력하고 제출 버튼을 누르면 열려있는 클래스가 있는지 확인할 수 있습니다. https://css.nevada.unr.edu/psc/rncssprd/EMPLOYEE/HRMS/c/COMMUNITY_ACCESS.CLASS_SEARCH.GBL

지금까지 내가 폼에 데이터를 입력하고 웹보기에 표시 볼 수 있습니다 여기에

폼의 웹 사이트입니다. 문제는 프로그램에서 제출 버튼을 클릭해도 아무 일도 일어나지 않는다는 것입니다. 글쎄, 실제로 그것은 검색을하지만, 내가 제출 한 이전 데이터는 잃어 버리게되고 폼에 값이없는 검색을합니다. 나는 그것을 감사 어떤 도움

public class Main extends Activity{ 

String URL = "https://css.nevada.unr.edu/psc/rncssprd/EMPLOYEE/HRMS/c/COMMUNITY_ACCESS.CLASS_SEARCH.GBL"; 
WebView mWebview; 

int noRepeat = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    new FetchItemsTask().execute(); 

} 

private class FetchItemsTask extends AsyncTask<Void,Void,Boolean> { 

    @Override 
    protected void onPreExecute() { 

    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     // TODO Auto-generated method stub 

     return true; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 


      mWebview = (WebView) findViewById(R.id.webView1); 
      // load login url 
      mWebview.loadUrl(URL); 
      //mWebview.setVisibility(View.INVISIBLE); 
      mWebview.getSettings().setJavaScriptEnabled(true); 

      mWebview.setWebViewClient(new WebViewClient() { 

       public void onPageFinished(WebView view, String url) { 

         // first time go to search page 

         Toast.makeText(getApplicationContext(), "done loading login, pressing button", Toast.LENGTH_SHORT).show(); 

         mWebview.loadUrl("javascript: {" + "document.getElementById('SSR_CLSRCH_WRK_SUBJECT$0').value = '"+"temp1"+"';" + 
         "document.getElementById('SSR_CLSRCH_WRK_CATALOG_NBR$1').value = '"+"temp2"+"';" + 
         "document.getElementsByName('CLASS_SRCH_WRK2_SSR_PB_CLASS_SRCH')[0].click();" + 
         "};"); // if I take out the click here the form will have temp1 and temp2 entered and everything fine, but it clicks temp1 and temp2 get cleared before it clicks some reason 



       } 
      }); 


    } 
} 

감사 :

이 지금까지 내 코드입니다. 당신이 그것을 또한 볼 필요가있는 경우에 모양이 위 위치하는 웹 사이트.

답변

1

document.getElementsByName은 지원되지 않습니다. 링크 (버튼)에 'id'속성이 있으므로 document.getElementById을 사용하는 것이 좋습니다. 대신

document.getElementsByName('CLASS_SRCH_WRK2_SSR_PB_CLASS_SRCH')[0].click();

:

사용 : 검색 양식의 코드를보고

document.getElementById('CLASS_SRCH_WRK2_SSR_PB_CLASS_SRCH').click(); 
+0

, 나는 데이터 손실을 설명하는 동작을 나타났습니다. Class Nbr 83998을 검색하는 경우이 방법이 유용합니다. 한 줄로 복사하여 코드에 붙여 넣으십시오 (분할 할 필요 없음). 값을 설정 한 후 onChange에있는 것과 동일한 JavaScript 코드를 실행하기 만하면됩니다. 'javascript : obj = document.getElementById ('SSR_CLSRCH_WRK_CLASS_NBR $ 8'); obj.value = '83998'; addchg_win0 (obj); doEdits_win0 (obj, 'S (5.0)', 'N', 'N', 'N', 'N', 'N', 'N',/^ * [0-9 \,] 0-9 \,] *)? * $ /); document.getElementById ('CLASS_SRCH_WRK2_SSR_PB_CLASS_SRCH'). 클릭(); void (0)' – LiveLongAndProsper

+0

정말 고마워요! 그게 효과가 있었어! 나는 너무 행복해서 나 혼자서 할 수 없었다. 피자를 먹을 시간이야. 고마워 :) – alexward1230

+0

당신을 환영합니다 - 다행스럽게 도울 수 있어요. 해결 방법은 특정 입력 필드에 값을 설정 한 다음 해당 필드에 대해 "반환"키워드를 제거하여 onChange 이벤트에 있던 항목을 실행하는 것입니다. 다른 필드에서 코드를 사용하기로 결정한 경우 그렇지 않으면 작동하지 않을 수도 있습니다. 두 번째 마지막 주석 만 실제로 관련성이 있으므로 다른 주석도 삭제할 것입니다. – LiveLongAndProsper

관련 문제